WordPress 主题制作终极指南
第一部分:准备工作与核心概念
在开始编码之前,我们需要了解一些基本概念和准备工作。

什么是 WordPress 主题?
WordPress 主题就是网站的“皮肤”和“骨架”,它决定了网站的外观(颜色、字体、布局)和部分前端功能,主题包含一系列 PHP 模板文件、CSS 样式表、JavaScript 文件以及图片资源。
核心特性:
- 分离关注点:主题只负责网站的“展示层”(Front-end),不处理数据(如文章、评论等),数据由 WordPress 核心和插件管理。
- 模板系统:WordPress 使用一套模板文件系统(如
header.php,index.php,single.php)来动态构建网页。 - 函数文件:
functions.php是主题的“大脑”,用于添加主题支持、注册导航菜单、设置侧边栏等。
开发环境准备
强烈建议在本地电脑上进行开发,而不是直接在线上网站操作,推荐使用 Local (由 WP Engine 开发,非常易用) 或 XAMPP/MAMP 这类本地服务器环境。
必备工具
- 代码编辑器:强烈推荐 Visual Studio Code (免费、强大、插件丰富)。
- 浏览器开发者工具:所有现代浏览器(Chrome, Firefox, Edge)都内置了强大的开发者工具,用于检查 HTML/CSS、调试 JavaScript 和响应式布局。
- 版本控制:学习使用 Git 和 GitHub/GitLab 来管理你的代码,这是专业开发者的必备技能。
第二部分:创建你的第一个主题
我们将从零开始,创建一个名为 my-first-theme 的主题。

步骤 1:创建主题文件夹
在你的 WordPress 安装目录下的 wp-content/themes/ 文件夹中,创建一个新的文件夹,命名为 my-first-theme。
wordpress/
└── wp-content/
└── themes/
└── my-first-theme/ <-- 你的主题文件夹
步骤 2:创建核心文件
一个最基本、可工作的 WordPress 主题只需要两个文件:
style.css(样式表)index.php(主页模板)
a) 创建 style.css
这个文件是 WordPress 识别主题的关键,必须在文件顶部添加一个注释块,包含主题的元信息。

/* Theme Name: My First Theme Theme URI: https://example.com/my-first-theme Author: Your Name Author URI: https://example.com Description: My very first WordPress theme. Version: 1.0 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Text Domain: my-first-theme */
- Theme Name: (必需) 主题的显示名称。
- Version: (必需) 主题版本号。
b) 创建 index.php
这个文件是主题的主模板,我们只放一句最简单的话来测试。
<?php // 这是一句 PHP 代码,确保文件以 PHP 开头 echo '<h1>Hello, WordPress World!</h1>'; ?>
步骤 3:激活主题
- 启动你的本地 WordPress 网站。
- 登录到 WordPress 后台。
- 导航到 外观 -> 主题。
- 你应该能在“我的主题”部分看到 "My First Theme"。
- 点击 “激活” 按钮。
访问你的网站首页,你应该能看到 "Hello, WordPress World!" 的标题,恭喜,你已经成功创建了第一个主题!
第三部分:WordPress 模板层级
WordPress 使用一套聪明的模板系统来决定显示哪个文件,当访问一个页面时,它会按以下顺序查找文件,找到第一个存在的文件就使用它,不再继续查找。
对于单篇文章页面:
single-{post-type}.php(single-post.php用于文章,single-product.php用于 WooCommerce 产品)single.phpsingular.phpindex.php
常用模板文件及其作用:
header.php: 网页的头部,通常包含<head>标签、网站标题、Logo 和主导航菜单。footer.php: 网页的页脚,通常包含版权信息、底部小工具等。index.php: 主页模板,也是所有模板的“后备”模板。home.php: 首页模板,当在后台设置“首页显示”为“最新文章”时生效。front-page.php: 静态首页模板,当在后台设置“首页显示”为“一个静态页面”时生效。single.php: 单篇文章页面模板。page.php: 单页面(如“关于我们”、“联系我们”)模板。archive.php: 归档页面模板(如按分类、标签、月份、作者归档的文章列表)。search.php: 搜索结果页面模板。php: 404 错误页面模板。comments.php: 评论模板。sidebar.php: 侧边栏模板。
步骤 4:拆分模板文件
让我们把 index.php 拆分成更标准的三部分:header.php, index.php, footer.php。
a) 创建 header.php
<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
<header>
<h1><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
<p><?php bloginfo( 'description' ); ?></p>
<nav>
<?php
wp_nav_menu( array(
'theme_location' => 'primary', // 我们稍后会注册这个菜单
'menu_class' => 'nav-menu',
) );
?>
</nav>
</header>
<div id="content">
<?php language_attributes(); ?>: 输出语言属性,如lang="zh-CN"。<?php bloginfo( 'charset' ); ?>: 输出网站字符集,通常是UTF-8。<?php wp_head(); ?>: 极其重要!这个钩子会加载所有必要的 CSS 和 JavaScript,必须放在</head>之前。<?php body_class(); ?>: 为<body>标签添加有用的 CSS 类,方便样式定制。<?php bloginfo( 'name' ); ?>: 输出网站标题。<?php esc_url( home_url( '/' ) ); ?>: 安全地获取网站首页 URL。
b) 创建 footer.php
</div><!-- #content -->
<footer>
<p>© <?php echo date('Y'); ?> <?php bloginfo( 'name' ); ?>. All rights reserved.</p>
</footer>
<?php wp_footer(); ?>
</body>
</html>
<?php wp_footer(); ?>: 极其重要!这个钩子会加载 WordPress 在页脚需要的脚本,必须放在</body>之前。
c) 修改 index.php
index.php 变得非常简洁,只需要包含这三个部分。
<?php get_header(); ?>
<main>
<h2>最新文章</h2>
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<article>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="entry-meta">
发布于 <?php echo get_the_date(); ?> 作者 <?php the_author(); ?>
</div>
<div class="entry-content">
<?php the_excerpt(); // 显示文章摘要 ?>
</div>
</article>
<?php endwhile; ?>
<?php else : ?>
<p>抱歉,没有找到任何文章。</p>
<?php endif; ?>
</main>
<?php get_sidebar(); // 稍后添加侧边栏 ?>
<?php get_footer(); ?>
<?php get_header(); ?>: 包含header.php文件。<?php get_footer(); ?>: 包含footer.php文件。<?php get_sidebar(); ?>: 包含sidebar.php文件。have_posts()和the_post(): WordPress 主循环,用于遍
