为什么不要直接改主题文件
直接编辑当前主题的 style.css 或 functions.php,一旦主题更新,所有改动都会被覆盖。正确做法是创建一个子主题,它继承父主题功能,你的修改独立保存,更新父主题不会丢失。
第一步:创建子主题文件夹
在 wp-content/themes/ 下新建文件夹,例如 my-child-theme,里面至少放两个文件:
style.css
/*
Theme Name: My Child Theme
Template: twentytwentyfour
*/
Template 后面写父主题的文件夹名,必须完全一致。
functions.php
<?php
addaction(‘wpenqueue_scripts’, function() {
wpenqueuestyle(‘parent-style’, gettemplatedirectory_uri() . ‘/style.css’);
wpenqueuestyle(‘child-style’, getstylesheeturi(), [‘parent-style’]);
});
这段代码先加载父主题样式,再加载子主题样式,保证你的CSS在后面生效。
第二步:启用子主题
进入后台「外观 → 主题」,找到你刚创建的子主题并启用。此时前台显示效果应与父主题一致。如果报错,检查 Template 拼写是否正确。
第三步:覆盖模板文件
想改某个页面的HTML结构,在父主题里找到对应模板文件,例如 single.php、header.php,复制到子主题根目录,再用相同路径结构放置。WordPress会优先读取子主题中的同名文件。
例如父主题有 template-parts/content.php,你在子主题创建 template-parts/content.php,修改它即可,不影响父主题。
第四步:用钩子修改功能,而不是改函数
父主题的 functions.php 里通常有 function mytheme_setup() 这类函数。不要直接改父主题文件,而是在子主题 functions.php 里:
- 用
remove_action()移除某个钩子 - 写同名函数前加
if (!function_exists())判断 - 用
add_filter()修改输出
比如要改摘要长度:
addfilter(‘excerptlength’, function() {
return 30;
});
第五步:添加自定义CSS的三种方式
- 子主题
style.css直接写 - 后台「外观 → 自定义 → 额外CSS」
- 子主题
functions.php里用wpaddinline_style()动态输出
推荐第一种,便于版本管理。写CSS时用浏览器开发者工具找到具体类名,避免用 !important 覆盖。
常见问题与避坑
- 子主题截图
screenshot.png可选,建议放一张 1200×900 的图 - 修改前先备份数据库和主题文件夹
- 不要复制父主题全部文件到子主题,只复制需要改的
- 如果父主题用了大量
gettemplatepart(),子主题同样要覆盖对应路径 - 更新子主题时,注意
style.css头部注释不要删
总结
WordPress主题修改的核心原则:能钩子就不改文件,能子主题就不动父主题。按本文步骤创建子主题,再逐步覆盖模板、添加CSS和函数,既能实现定制效果,又能安全更新。

