
主题开发入门最容易卡住的地方,不是某一段 PHP,而是不知道先学哪一层。下面六段按依赖关系排列:前一段做不出来,就不要进入下一段。官方材料的入口见WordPress 官方文档精选导读。
第 0 段:本地能跑起来
- 本地用 PHP 8.2 或更高,打开
WP_DEBUG和WP_DEBUG_LOG,关闭WP_DEBUG_DISPLAY; - 会用管理后台切换主题、安装一款经典主题和一款区块主题做对照;
- 会看
wp-content/debug.log。白屏时先读日志,而不是继续改文件。
调试开关和日志位置,和排障是同一套习惯,见插件冲突排查流程。
第 1 段:模板层级
WordPress 不是“一个 index 打天下”。请求进来之后,按类型挑选模板文件。先能口述这几条,再写代码:
- 站点首页可能用
front-page.php,文章列表可能用home.php,两者不是同一个文件。 - 文章用
single.php,页面用page.php,自定义文章类型会先找single-{post_type}.php。 - 分类、标签、自定义分类都有自己的归档模板,找不到才回落到
archive.php,最后才是index.php。
练习:做一个只含 index.php、style.css、single.php、page.php 的主题,确认文章和页面走了不同文件。模板层级的说明以开发者文档为准。
第 2 段:循环、条件标签和钩子
在 index.php 里写出主循环,能打印标题、摘要和永久链接。然后用条件标签限定模板:is_front_page()、is_singular()、is_archive()。功能不要写死在模板底部,改成挂到 wp_enqueue_scripts、after_setup_theme 上。
这一段过关的标志:样式和脚本只在需要的模板入队,而不是全站输出。父主题升级后改动还在,是因为你写在子主题里。规范见子主题与二次开发规范。
第 3 段:一个能交付的最小经典主题
在练习站完成这些文件后再考虑客户项目:
style.css主题头信息完整,含 Text Domain;functions.php声明标题标签、缩略图、HTML5、菜单位置;header.php调用wp_head(),footer.php调用wp_footer();- 模板使用
wp_kses_post或对应的转义函数输出标题和链接; - 图片使用
wp_get_attachment_image(),带宽高,避免布局偏移。
做完用主题性能测评方法里的四类页面跑一遍。入门主题如果首页脚本已经超过预算,先删功能,不要先加缓存插件遮住。
第 4 段:区块主题和 theme.json
当页眉、页脚和模板需要编辑器里改、并且团队不想维护大段 PHP 模板时,再学区块主题。先读懂 theme.json 的三块:设置(颜色、字体、间距是否开放给编辑者)、样式(全局与区块默认外观)、模板部分(templates 与 parts)。
什么项目该用站点编辑器,见区块主题(FSE)入门与选型。经典主题已经稳定、只是要改几个模板的项目,不必为了“更现代”整站迁到区块主题。
第 5 段:用一个小项目收口
选一个范围很小的练习:企业介绍加文章列表,或者产品目录加询盘页。验收只看四条:
- 文章、页面、归档走了预期模板;
- 升级 WordPress 小版本后前台没有白屏;
- 移动端 LCP 有记录,而不是“看起来还行”;
- 改动可以交给另一个人,文件清单不超过一页。
三条工作路线如何和测评、二次开发衔接,见主题测评与开发教程。
