把父主题的 single.php 复制到子主题根目录后修改,前台还是父主题的样子,子主题的样式倒是生效了。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,文件放错层级,子主题只有在与父主题相同的相对路径下才能覆盖模板,放进子目录或文件名多一个后缀都不会命中。

「子主题模板覆盖」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

# 子主题只需同名文件
# child/single.php 覆盖父主题 single.php
# 不要再套一层父主题目录名
ls wp-content/themes/child/

同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

具体做法是,按父主题里的相对路径在子主题建同名文件;确认子主题样式头部声明的 Template 名字正确;用模板调试插件核对最终命中的是哪个文件。

最后用这个标准收尾,前台渲染的是子主题里的模板,父主题更新也不覆盖。

作者 9823189