利用WordPress子主题进行主题修改

PS:对于经常更换主题者来说,利用WordPress子主题可以更简单的进行升级、修改;

WordPress建站,感慨最多的词估计就是“折腾”了,Z大说“因为喜欢,所以折腾”,各种折腾。前几天看到一句话,说是“主题如衣服”,很有道理,一个主题用久了容易审美疲劳,那么WordPress建站,一般的流程可能是:

  • 寻找主题
  • 添加插件
  • 给主题添加各种功能,如文章分页、文章归档、读者墙、内页链接、评论邮件回复提醒等等。

那么在使用、修改主题的时候,我们可能会碰到这些个问题:主题更新,相应的我们的各种设置就会消失,当然可以备份相关代码,再次添加,这无疑多了很多重复性的无益的工作。WordPress子主题很容易就能解决这个问题,在不改变原主题的基础上,可以进行任何修改添加,而且建立子主题方法简单。通过这样的方式,当父主题被更新的时候,您所做的修改就可以保存下来。因此,WordPress官方强烈建议使用此方法对主题进行修改。以下援引WordPress官方文档:子主题中部分内容,需要详细了解请点击以上链接。以下以官方主题:Twenty Ten为例。

一、什么是WordPress子主题

WordPress子主题也是一个主题,它继承了另一个主题——父主题——的功能,并允许你对父主题的功能进行修改,或者添加新功能。

 

二、怎样创建WordPress子主题

在主题目录wp-content/themes下,创建子主题目录twentyten-child(这个可以自定义),twentyten-child目录至少应含有style.css,里面确认了父主题的位置,子主题的名称、作者等相关信息。当然,子主题还可以含有像常规主题的所有文件,如果你需要的话。但我们经常用到的可能会是这几个文件:functions.php,模板文件(如文章归档模板文件等)。

三、style.css

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

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

下面是一个style.css文件的头部信息的示例:

逐行的简单解释:

  • Theme Name. (必需) 子主题的名称
  • Theme URI. (可选) 子主题的主页。
  • Description. (可选) 子主题的描述。比如:我的第一个子主题,真棒!
  • Author URI. (可选) 作者主页。
  • Author. (optional) 作者的名字。
  • Template. (必需) 父主题的目录名,区别大小写。 注意: 当你更改子主题名字时,要先换成别的主题。
  • Version. (可选) 子主题的版本。比如:0.1,1.0,等。

*/ 这个关闭标记的后面部分,就会按照一个常规的样式表文件一样生效,你可以把你想对WordPress应用的样式规则都写在它的后面。

 

要注意的是,子主题的样式表会替换父主题的样式表而生效。(事实上WordPress根本就不会载入父主题的样式表。)所以,如果你想简单地改变父主题中的一些样式和结构——而不是从头开始制作新主题——你必须明确的导入父主题的样式表,然后对它进行修改。下面的例子告诉你如何使用@import规则完成这个,如

 

PS:需要注意的是,@import 规则之前没有其他的CSS样式规则,如果你将其他的规则置于它之上,那么它将无效,并且父主题的样式表不会被导入。

四、functions.php

不像style.css,子主题中的functions.php不会覆盖父主题中对应功能,而是将新的功能加入到父主题的functions.php中。(其实它会在父主题文件加载之前先载入。)

functions.php文件的结构非常简单:将PHP起始标签置于顶部,关闭标签置于底部,它们之间就写上你自己的PHP函数。如给wordpress开启链接管理功能。

子主题的functions.php首先加载意味着你的主题的用户功能可插入——即子主题是可替换的——通过有条件地进行声明。例如:

用这种方式,子主题可以替换父主题中的一个PHP函数,只需要简单地对它再次声明。

 五、模板文件

模板文件在子主题中的表现和style.css一样,它们会覆盖父主题中的相同文件。子主题可以覆盖任何父主题模板中的文件,只需要创建同名文件就行。

同样,这项WordPress的功能允许你修改父主题的样式功能而不用去编辑父主题的文件,并且你的修改能让你在更新父主题后继续保留。

下面是一些使用模板文件的子主题的例子:

  • 增加一个父主题没有提供的模板(例如:网站地图页面的模板,或者一单栏页面,它们在页面编辑,模板选择里是可用的)

 

  • 增加一个比父模板更加具体的模板(见模板级别)。(例如:新加的tag.php模板用于按tag归档的文章来代替父主题中通常的archive.php模板。)

 

  • 替换父主题中的一个模板.(例:使用你自己的home.php来覆盖父主题中的home.php

后记:给自己的主题添加个子主题,我想可能还有个方便的地方,可以更好查看自己的添加的各种功能代码,这些也都是我们个人的技术积累,使用起来应该会更加的容易。

俊霖

发表评论

您必须