什么是子主题?
顾名思义,一个子主题(child theme)是附加在主主题(父主题)上的主题,它继承了原始或父主题的所有功能,可以让你在不丢失修改内容的情况下进行更改,即使更新了父主题或原始主题。它可以保证当在你更新父主题时,你在子主题functions.php添加代码不被删除。因为我们添加的代码在本身的主题上是没有的,所以更新父主题后,我们全部加在父上面的东西都会被删除。
当然你完全可以不做一个子主题,把自定义代码全部通过代码插件加入网站,不过WordPress网站优化的一点就是少用插件,所以能少一个就少一个是最好的。
通过插件生成子主题
用WordPress建站最方便的东西就是安装插件来完成我们的各种需求,这次当然也不例外。我们可以直接在WordPress后台搜Child Theme Configurator安装启用。
启用后去到后台的工具 > Child Themes
这里选择我们想要生成子主题的主题后点击 “Analyze”
分析后的内容我们其实都可以无视(默认),直接去到最下面点 “新建子主题”
完成后直接去外观 > 主题 > 启用子主题就可以了,刚刚下载的插件也可以删除了,插件能少就少。
成功启用子主题后我们去到主题文件编辑器里面(有些人的主题文件编辑器被隐藏了,尤其你如果是在用siteground的话)就可以添加自定义代码了。
父主题自带子主题
有些高级点的主题或模板主题是自带子主题的,你直接下载过来安装上去就可以了。
手动安装child themes
除了通过插件生成子主题之外,当然也可以选择手动来操作生成,我这里就不细说了,简单带过。
去到网站文件找到 wp-content/themes/ 生成一个新文件夹,名字和父主题一样不过后面加个 -child,进入这个文件夹生成两个文件,分别是 style.css 和 functions.php
在 style.css 里面你要写类似以下内容:
Theme Name: Bricks Child Theme
Description: Use this child theme to extend Bricks.
Author: Bricks
Author URI: https://bricksbuilder.io/
Template: bricks
Version: 1.1
Text Domain: bricks
调整文件的值以基于你要创建的子主题。
Theme Name: 子主题的名称,建议保留父主题的名称作为新名称的一部分。
Description: 新子主题的描述
Author: 子主题作者的名字
Author URL: 作者的网站
Template: 这是对父主题的引用,你需要填写父主题文件夹的名称。
Version: 子主题的版本
Text Domain: 子主题的翻译标识符
编辑 functions.php 文件加以下内容:
function enqueue_styles_child_theme() {
$parent_style = 'parent-style';
$child_style = 'child-style';
wp_enqueue_style( $parent_style,
get_template_directory_uri() . '/style.css' );
wp_enqueue_style( $child_style,
get_stylesheet_directory_uri() . '/style.css',
array( $parent_style ),
wp_get_theme()->get('Version')
);
}
add_action( 'wp_enqueue_scripts', 'enqueue_styles_child_theme' );
手动生成子主题的过程就是这样。