WordPress中子主题Child Themes的使用

WordPress的一个优势就是有成千上万的主题以及插件,几乎能想到的主题,企业版、博客版、摄影展示版、在线商城等等都可以找到相应的主题或者插件予以支持。而另外一个优势就是可以放心大胆的对WordPress进行相应的修改,其中最常见的就是在模板函数functions.php加入相应的代码了。之前在WordPress模板函数functions.php中加入函数的调用方式 也提到过,使用子主题的方式可以方便的进行修改,而不担心主题的升级更新什么的。

WordPress子主题同样是一个主题,它继承了另一个主题——父主题——的功能或者样式,并允许你对父主题的功能进行修改,或者添加新功能。创建一个子主题是非常的简单的,可以说简单到子主题仅需要一个文件就可以了。这个文件就是编写正确的style.css 文件。通过style.css 文件可以对父主题的样式跟布局进行修改和升级,而不需要对父主题做任何的修改。并且父主题发生改变的时候,并不会影响到子主题。

子主题的构成:

  • 文件夹(可以任意命名,但建议与父主题相关)。
  • css 文件(必不可少)。
  • php(可选,当需要对父主题进行修改functions.php文件时)
  • 其他文件(如有需要)
图1.WordPress子主题的文件构成

这里因为前期调用了其他相应的代码,所以有functions.php加另外一个文件夹。

style.css文件

style.css是一个子主题唯一必须的文件。它的头部提供的信息让WordPress辨认出子主题,并且重写父主题中的style.css文件。

对于任何WordPress主题,头部信息必须位于文件的顶端,唯一的区别就是子主题中的Template:行是必须的,因为它让WordPress知道子主题的父主题是什么。

/*
Theme Name:     generatepress.cn
Theme URI:      https: //www.iappi.com/
Description:    generatepress.cn 的自定义版本
Author:          
Author URI:      
Template:       generatepress
Version:        0.1.0
*/ 
@import url("../generatepress/style.css");
@import url("../generatepress/style.min.css");

逐行的简单解释:

Theme Name. (必需) 子主题的名称。

Theme URI. (可选) 子主题的主页。

Description. (可选) 子主题的描述。比如:generatepress的子主题

Author URI. (可选) 作者主页。

Author. (optional) 作者的名字。

Template. (必需) 父主题的目录名,区别大小写。即告知WordPress对应的是哪个父主题。 注意: 当你更改子主题名字时,要先换成别的主题。

Version. (可选) 子主题的版本。比如:0.1,1.0,等。

@import 用 @import规则将父主题的样式表调入,这里调入了2个style.css、style.min.css 文件。注意@import必须在顶端,在其之前不能有其他的css规则,否则@import不会生效。

而如果需要对样式进行自定义时,在子主题中设定的规则,会覆盖掉父主题系统的规则。即同样的规则子主题的优先级高。

functions.php文件

子主题中的functions.php不会覆盖父主题中对应功能,而是将新的功能代码加入到父主题的functions.php中。而且它会在父主题文件加载之前先载入。在这里的functions.php文件中也是比较简单的,因为是使用调用OTHERfunctions文件夹中的PHP文件的方式,所以是使用了include的方式进行引用。

这样子,相当于进行了双重的调用。主题会调用子主题的functions.php文件,引用了’/OTHERfunctions/chaxun.php’等文件,其次会调用父主题的functions.php文件。

最后,需要在WordPress后台管理外观-主题-选择激活子主题generatepress.cn,这样激活后的效果与使用GeneratePress主题,修改主题中的functions.php文件的效果是一样的。但是这样方便很多,且不会引起错误或者其他问题,发现不对直接切换回父主题或者删除相应的PHP文件、注释掉include语句即可。

图2.激活的WordPress子主题