我们通过使用子主题进行修改WordPress主题,而不需要直接修改源码,就可以避免出现无法更新的内容。子主题需要有一个父级主题存在才能启用,根据WordPress主题的主要文件,子主题存在,WordPress则会自动使用子主题的文件,而放弃使用父主题。这样,我们先要修改父级主题的哪一个文件,则可以复制这个文件到子主题中,然后再修改这个文件,这样就可以达到修改的目的了。当然,WordPress的主题核心文件才能够被识别替换,而大部分主题除了主要文件,还有较多其他的文件是无法进行修改的。
子主题能够被替换的文件(WordPress主题的核心文件)
主要文件
style.css -主样式表,WordPress主题信息存储(主题名称、版本、作者等)【子主题必须含有,注意这个文件不会覆盖,而是增加样式】
screenshot.jpg 子主题封面【最好是有,方便分别】
functions.php -主题功能文件,主题所需要使用的函数、方法、类均可在此文件输入【注意这个文件不会覆盖,而是增加函数,或者类】
index.php – 主题首页文件
header.php – 主题顶部文件
footer.php -主题底部文件
列表
archive.php -所有归档列表(如果没有tag.php、category.php、author.php、date.php等页面,则会使用这个作为默认列表)
tag.php -标签结果列表(点击一个标签,含有这个标签的所有文章列表)
category.php- 分类目录列表
author.php -作者文章列表
date.php – 时间归档
search – 搜索列表
页面/文章
page.php – WordPress页面(单页)
single.php -文章页
其他
404.php -404状态页面
模板文件,一般子主题开发者都会给予说明
以上文件,子主题若存在,WordPress则会直接使用子主题的文件,而放弃使用父级主题,因此,如果你需要修改父主题的哪一个文件,则直接找到父级主题的文件,复制粘贴到子主题中进行修改即可。
ps.注意,子主题中,style.css 和functions.php 不是覆盖父级主题,而是增加:
style.css 输入css源码,在用WordPress钩子输出到head ,增加的css样式则会对网站产生影响
functions.php,输入函数、钩子、类,直接会对网站产生影响,但不影响父级主题的函数、钩子和类,这里需要注意,不要输入和父级主题相同的函数名、类名,否则会出现函数名冲突报错。
空子主题制作你自己的子主题
子主题空模板说明:
style.css
/*
Theme Name: 子主题名称
Theme URI: https://yuanmazhi.com/
Template: yuanmazhi
Author: ritheme
Author URI: https://yuanmazhi.com/
Description: 主题描述
Version: 1.0
*/
按照上面的说明进行修改成你自己的,即可正确的制作成你自己的子主题。
这个css文件是空的,除了这一段注释之外,没有任何css样式,在修改之后,你需要增加一些样式进去的话,直接增加是无效的,因为这个css样式没有在网站头部输出。
因此我们增加了一个函数文件 functions.php
这个里面包含一个主题挂载css的函数和钩子:
<?php
/*
**
** 子主题使用函数钩子
**
**
*/
//加载style.css 子主题样式
function ymz_child_theme_css() {
if (!is_admin()) {
wp_register_script( 'ymz_child_theme_style', get_stylesheet_directory_uri(). 'style.css' );
wp_enqueue_style( 'ymz_child_theme_style' );
}
}
add_action( 'init', 'ymz_child_theme_css' );
使用以上代码即可加载style.css样式,如需其他style文件,照上面写法即可。
不可被替换的文件
上面说明了所有可被直接替换的内容以及对应的文件,因此如果你想要修改任意上文所述的文件,则是直接复制父级主题的文件到子主题,然后直接修改即可。还有很多的内容,直接替换是无法进行修改的,下面我们就来说一说,哪一些内容无法被替换,应该如何进行。
不可被替换的文件,不是WordPress主题的核心文件,而是主题开发者增加WordPress主题的功能而写的一些文件,这些文件通常在functions.php中 使用php关联函数被关联了。也就是说,实际上这些文件的代码都是可以放入functions.php的,为了方便维护和管理,分成了文件和文件夹,之后主题作者可以轻松的找到这些内容,而不是将所有的功能代码都放入functions.php中,这样难以维护。而前文所说,functions.PHP是不可被替换的,而只能增加内容,因此,除了WordPress主题的核心文件,其他文件不可被替换。