使用WordPress子主题解决频繁升级主题的困扰

一个优秀的WordPress主题是需要不停的修改和完善,有时也是从安全角度出发,所以势必要不断的推出升级版。如果从功能上来看,我们无需因升级而升级,但是如果遇到代码漏洞等问题,我们必须选择升级。但是通常我们在做网站时,都会对主题作一些小的修改,譬如说做国内站可能会涉及到清除GOOGLEAPIS等链接;针对产品展示,可能会修改single-xxx.php文件;最常见的是自定义CSS。那么在升级wordpress主题(升级WP主题其实就是把旧主题删除掉,用新主题传上去就可以了)时,采用覆盖文件方式,那我们之前修改过的内容就会丢失,由于时间久了,我们就会忘记修改过哪些内容,同时每次升级都要修改一次的体验也实在太糟糕了。

那么如何将主题升级到最新版本,而又能保留之前的修改呢?答案很简单,使用WordPress子主题功能,升级后无需再次修改原主题。下面就以Modernize主题为例,创建一个Modernize主题的子主题。

一、在WordPress主题目录(themes)新建一个主题文件夹,名称任意,比如:modernize-child(这个命名没有要求)。
二、在modernize-child目录下,创建两个文件(functions.php和style.css)并做一张图片(图片名:screenshot.png)。
三、编辑functions.php,填写以下内容:

<?php

/*
* Add your own functions here. You can also copy some of the theme functions into this file.
* WordPress will use those functions instead of the original functions then.
*/

四、编辑style.css,填写以下内容:

/*
Theme Name: Modernize Child
Description: Awesome documents in Kalated.com
Version: 1.0
Author: Kalated
Author URI: http://wenda.kalated.com
Template: modernize-v3-17
*/

@import url(“../modernize-v3-17/style.css”);
/*Add your own styles here:*/

特别注意以上代码出现的两处modernize-v3-17,这个名称必须要和父主题文件夹名称相同。这样子主题才能继承父主题的功能和正确引用CSS文件。

五、先安装父主题但不启用,再安装子主题并启用。

六、自定义CSS时,直接在上文提到的子主题的style.css内添加CSS代码即可。如果要修改源代码,必须将父主题内的相应文件复制到子主题内,再进行修改。举例如下:

1,修改modernize-v3-17/single-portfolio.php文件,将single-portfolio.php复制到modernize-child目录下,再进行相应修改;

2,修改modernize-v3-17/include/plugin/page-item.php文件,这时我们需要先在modernize-child目录下,新建include文件夹,进入include文件夹新建plugin文件夹,接着将page-item.php复制到这里,再作相应的代码修改。

对比以上两个例子,

modernize-v3-17/single-portfolio.php

modernize-child/single-portfolio.php

modernize-v3-17/include/plugin/page-item.php

modernize-child/include/plugin/page-item.php

我们可以看出,子主题的文件的路径必须和父主题的文件路径一致才可以。至此我们已经完整的创建了子主题和修改源码,在日后的升级中,只需要将modernize-v3-17删除,将新主题上传即可。

但是要注意一点,如果新升级的主题文件夹名不再是modernize-v3-17,而是变成modernize-v3-18,我们回到以上第四步的内容,需要将两处modernize-v3-17改为modernize-v3-18。