WordPress 经典主题开发:从零开始创建你的一个主题
每一个 WordPress 网站都需要一个主题来展示内容,而理解主题的构成并不像想象中那么复杂。经典主题(Classic Theme)作为 WordPress 传统的主题架构,依然活跃在无数网站中,它依靠 PHP 模板文件动态生成页面。本文会带你亲手创建一个基础的 WordPress 经典主题,你只需要准备一个代码编辑器,大约十分钟就能完成。通过这个过程,你会接触到 WordPress 主题的核心文件、模板层级的基础概念,以及 WordPress 循环(The Loop)这个关键的输出机制。无论你是想开发自己的主题,还是想理解现有主题的运作方式,这篇文章都会为你打下必要的基础。
认识 WordPress 经典主题
在 WordPress 主题的里,存在两种主流模式:经典主题(Classic Theme) 和块主题(Block Theme)。块主题使用 HTML 文件存放模板结构,依赖 theme.json 控制样式,强调“全站编辑”。而经典主题依靠 PHP 文件作为模板,动态执行代码、查询数据库并输出 HTML 页面。本文聚焦于经典主题——至今仍在大量站点使用,对理解 WordPress 底层逻辑至关重要。
经典主题基础的文件只需两个:一个是 index.php,用于展示文章列表;另一个是 style.css,控制外观样式。你甚至不需要任何 PHP 基础,通过复制现成的代码就能跑起来。
动手之前的准备工作
在开始之前,你需要有一个 WordPress 运行环境。如果你还没有,推荐使用 Local 或 XAMPP 这类本地环境工具,在电脑上快速搭建一个测试站点。这样你可以在不影响线上网站的前提下自由尝试。
你还需要一个代码编辑器,比如 VS Code(免费且好用),或者系统自带的文本编辑器(Windows 用记事本,Mac 用文本编辑)也可以临时应付。
一步:创建主题文件夹
在你的 WordPress 站点目录中,找到 wp-content/themes/ 这个文件夹。这是所有主题存放的地方。
在该目录下新建一个文件夹,命名为 my-first-theme(你也可以用你喜欢的名字)。这个文件夹名就是你的主题标识,所有主题文件都要放在这里面。
二步:创建样式表 style.css
在 my-first-theme 文件夹中,创建一个名为 style.css 的文件。这个文件不仅是样式表,它还有一个关键作用——存放主题信息头,让 WordPress 识别并显示你的主题。
打开 style.css,填入以下代码:
text
/*
Theme Name: My First WordPress Theme
*/
body {
background: #21759b;
}
你可能注意到了,上方的注释块包含了 Theme Name 声明。这是主题信息头(Theme Header),WordPress 通过读取这段注释来获取主题名称、作者、描述等元数据。没有这段声明,你的主题就不会出现在后台主题列表里。
除了 Theme Name,你还可以添加其他信息,比如:
text
/* Theme Name: My First WordPress Theme Author: 你的名字 Description: 这是我学习 WordPress 主题开发创建的一个主题 Version: 1.0 */
style.css 下方的 body { background: ... } 是真正的 CSS 样式,它会修改网站页面的背景颜色。你可以随意调整色值,让页面看起来有点个性。
三步:创建索引模板 index.php
在同一个主题文件夹中,创建一个名为 index.php 的文件。这是你的主题的默认模板。当用户访问你的网站时,WordPress 会优先使用这个文件来渲染页面。
将以下代码完整复制到 index.php 中:
php
<!DOCTYPE html>
<html>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<title><?php wp_title( '|', true, 'right' ); ?></title>
<link rel="stylesheet" href="<?php echo esc_url( get_stylesheet_uri() ); ?>" type="text/css" />
<?php wp_head(); ?>
</head>
<body>
<h1><?php bloginfo( 'name' ); ?></h1>
<h2><?php bloginfo( 'description' ); ?></h2>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h3><?php the_title(); ?></h3>
<?php the_content(); ?>
<?php wp_link_pages(); ?>
<?php edit_post_link(); ?>
<?php endwhile; ?>
<?php
if ( get_next_posts_link() ) {
next_posts_link();
}
?>
<?php
if ( get_previous_posts_link() ) {
previous_posts_link();
}
?>
<?php else: ?>
<p>No posts found. :(</p>
<?php endif; ?>
<?php wp_footer(); ?>
</body>
</html>
这段代码看起来有点长,但拆解开来并不复杂。我们来一一认识其中的核心元素:
模板标签(Template Tags)
模板标签是 WordPress 提供的 PHP 函数,它们负责输出特定的内容或执行特定的任务。你可以把它们理解成填空工具——在模板的指定位置填入网站标题、文章内容、链接地址等动态数据。下面列出这段代码中用到的几个关键标签:
<?php bloginfo( 'name' ); ?>:输出网站标题,你在“设置 → 常规”里填写的站点名称。<?php bloginfo( 'description' ); ?>:输出网站副标题(Tagline)。<?php wp_title( '|', true, 'right' ); ?>:生成当前页面的标题,适合放在<title>标签中使用。<?php echo esc_url( get_stylesheet_uri() ); ?>:获取当前主题的style.css文件的 URL,并安全地输出。esc_url负责过滤掉不安全字符,保证链接的安全性。<?php wp_head(); ?>和<?php wp_footer(); ?>:这是两个钩子(Hooks)。它们本身不输出可见内容,但为插件和主题功能提供了插入点。很多插件依赖这些钩子来加载脚本或样式,所以务必保留。
模板层级(Template Hierarchy)
经典主题有一个重要的概念叫模板层级(Template Hierarchy)。简单说,WordPress 会根据用户访问的内容类型(首页、单篇文章、页面、分类归档等)自动选择合适的模板文件。比如:
- 访问单篇文章时,优先使用
single.php - 访问页面时,优先使用
page.php - 访问分类归档时,优先使用
category.php
如果这些文件不存在,WordPress 会回退到 index.php。所以 index.php 是所有模板的“后防线”,它必须存在。
WordPress 循环(The Loop)
这是整个 index.php 中核心的部分,我们来重点理解它:
php
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h3><?php the_title(); ?></h3>
<?php the_content(); ?>
<?php wp_link_pages(); ?>
<?php edit_post_link(); ?>
<?php endwhile; ?>
这段代码叫做 WordPress 循环(The Loop)。它的执行逻辑是这样的:
have_posts()检查当前查询是否有文章数据。- 如果有,
while循环开始执行。 the_post()从数据库取出下一篇文章的数据,并设置好全局变量。- 在循环体内,
the_title()输出当前文章的标题,the_content()输出文章内容。 - 循环结束,进入下一次迭代,直到所有文章都被展示出来。
如果没有任何文章,就执行 else 分支,显示“No posts found. :(”。
循环是 WordPress 主题里出镜率高的代码块,几乎所有显示文章列表或内容的模板都会用到它。
四步:安装并激活主题
现在你的主题已经有了基础的结构:
text
my-first-theme/ ├── style.css └── index.php
有两种方式可以安装主题:
方式一:复制文件夹 将整个 my-first-theme 文件夹复制到你的 WordPress 站点的 wp-content/themes/ 目录下。
方式二:打包 ZIP 安装 将主题文件夹压缩成 ZIP 包(注意是压缩文件夹本身,而不是压缩里面的文件),然后在 WordPress 后台进入“外观 → 主题 → 添加主题 → 上传主题”,选择 ZIP 文件上传并安装。
安装完成后,进入“外观 → 主题”,找到你创建的“My First WordPress Theme”,点击激活。
五步:查看效果
激活后,访问你的网站首页(前台,不是后台),你应该能看到一个浅蓝色背景的页面,显示你的网站标题、副标题,以及所有已发布的文章列表(如果没有任何文章,会显示“No posts found. :(”)。
页面上可能没有菜单、侧边栏、漂亮的排版——这完全正常。你现在看到的是纯粹的 WordPress 骨架。所有的高级功能都是在这些基础文件之上逐步添加上去的。
扩展知识:更多模板文件
当你的主题需要支持更多内容类型时,可以创建额外的模板文件。常见的包括:
- header.php:存放网站的头部区域,比如导航菜单、Logo 等。其他模板通过
<?php get_header(); ?>调用它。 - footer.php:存放页脚区域,比如版权信息、关闭标签等。其他模板通过
<?php get_footer(); ?>调用它。 - sidebar.php:存放侧边栏内容,通过
<?php get_sidebar(); ?>调用。 - single.php:专门用于显示单篇文章。
- page.php:专门用于显示独立页面(Page)。
- archive.php:用于显示归档页面(分类、标签、作者、日期等)。
- functions.php:主题的功能文件,可以添加自定义功能、注册菜单、加载脚本等。
把通用的部分拆分到独立的文件中,能让主题的代码更整洁、更易于维护。比如,你可以把 <head> 部分和导航栏放在 header.php,把底部的版权信息放在 footer.php,然后在 index.php 中用 get_header() 和 get_footer() 引入它们。
总结
WordPress 经典主题的开发入门,本质上就是掌握两个核心文件和一个关键代码块:
- style.css:提供主题身份信息,以及基础的 CSS 样式。
- index.php:提供默认的 HTML 结构和 PHP 逻辑。
- WordPress 循环(The Loop):负责从数据库获取文章并输出到页面。
这种模式虽然看起来简陋,但它体现了 WordPress 主题开发本质的逻辑:用 PHP 模板标签输出动态数据,用 CSS 控制外观,用模板文件的结构对应不同的内容类型。当你理解了这些基础,再去学习更复杂的模板层级、自定义查询、小工具和自定义izer 设置,都会顺畅很多。
你刚才完成的这个小主题,虽然外观朴素,但它已经是合法可用的 WordPress 主题了。从这一步开始,你可以一步步添加样式、拆分模板、注册菜单,打造属于你自己的完整主题。