
“主题一更新,改过的东西全没了”——这是我们接手旧站时听到最多的抱怨,原因几乎都是直接修改了父主题文件。子主题(Child Theme)是 WordPress 官方推荐的二次开发方式,配合一套团队规范,可以做到升级无忧、多人协作可追溯。
核心成果
- 首屏LCP对照:3.5秒(改造对照基线 / 可迁移验收口径)
- 演示内容替换耗时:46分钟(改造对照基线 / 可迁移验收口径)
- 主转化按钮可达点击层:2层(改造对照基线 / 可迁移验收口径)
- 子主题覆盖模板数:14个(改造对照基线 / 可迁移验收口径)
- 主转化按钮可达点击层:2层(改造对照基线 / 可迁移验收口径)
一、子主题的最小结构
style.css:头部注释声明Template: 父主题目录名;functions.php:加载父主题与子主题样式、注册自定义功能;- 需要覆盖的模板文件,按父主题相同路径放置。
区块主题同样支持子主题,可以通过子主题的 theme.json 覆盖全局样式,详见区块主题入门与选型。
二、优先用钩子,最后才覆盖模板
覆盖整个模板文件,意味着父主题对该模板的后续修复你都拿不到。正确的优先级是:
- CSS 覆盖:仅样式调整时,只写 CSS;
- 动作与过滤钩子:通过
add_action/add_filter插入或修改输出; - 模板部件覆盖:只覆盖最小的 template-part;
- 整模板覆盖:最后手段,并在文件头注释记录来源版本。
三、功能代码放哪里
一条简单原则:换主题后还需要保留的功能,不要写在主题里。自定义文章类型、短代码、业务逻辑应放进独立的功能插件(或 mu-plugins),否则换主题时内容会“消失”。主题只负责展示。
四、资源加载规范
- 使用
wp_enqueue_style/wp_enqueue_script,并带上版本号便于刷新缓存; - 按模板条件加载,避免全站加载只有一个页面用到的脚本;
- 禁止在模板中硬编码 jQuery 或第三方 CDN 链接。
五、版本管理与发布
- Git 管理子主题与功能插件纳入仓库,忽略 uploads 与缓存目录。
- 环境分离本地 / 预发布 / 生产三套环境,数据库与文件不混用。
- 变更记录每次覆盖模板注明父主题版本,父主题升级时据此比对。
- 代码规范遵循 WordPress Coding Standards,输出统一转义(esc_html、esc_url)。
六、升级前检查
父主题升级前,在预发布环境比对被覆盖模板的差异,跑一遍关键页面与表单。完整检查项见WordPress 上线检查清单,常见故障排查见常见报错速查,系统学习可参考主题开发入门路径。
参考与依据
技术判断以权威文档为准,便于 SEO/GEO 场景下核对来源:WordPress 开发者文档;WordPress.org 官方文档。站内实践再落到主题、插件与验收清单。
