为什么要通过创建wordpress子主题的方式修改主题

作者

wordpress本身有大量的高质量的主题,但是结合自己网站的特点,还是有必要进行小范围的修改。比如字体颜色、默认的字体(特别是一些英文的主题需要修改字体)、或者添加一些新的功能。直接在原来的主题上进行修改的话,虽然很简单。但是后期维护不方便。由于选择的主题自身的一些原因,可能会升级。比如添加了新的功能,或者修改了bug等。这样你就比较难选择是否升级了,如果进行了升级,那么你修改的内容可能被覆盖,如果不升级吧,可能会有安全问题,或者新的功能使用不了。


wordpress子主题
wordpress子主题

wordpress作为一款流行的网站系统,对于这样的问题,有个很好个解决方法。就是使用 子主题 。可以把原来的主题称为父主题。通过子主题的方式修改网站的模板,在不修改原模板代码的情况下,可以达到修改主题的目的。这里的修改可以是添加一些功能,或者调整一些样式等。

开始制作一个子主题的时候,要了解子主题是如何工作的。子主题会继承父主题的所有代码,父主题的所有功能,函数、样式等子主题都会继承。子主题里可以增加一些新的代码,这样子主题就有比父主题更多的功能,或者可以替换掉父主题的一些模板。

从简单的开始,仅仅添加添加一个文件就可以。在theme目录创建一个模板目录,里面放一个子主题必要的文件。这个文件就是 style.css。这个是重要的文件。除去这个文件一般还会有一个函数文件(functions.php)和若干个模板文件,但这不是必须的。
这里给出一个简单的示例
file: style.css

/*
 Theme Name: twentytwelve-child
 Template: twentytwelve
 */

一行是主题的名字,二行是被继承的主题。 一般的主题是不会有 Template, 只有子主题里才会有。这样主题就可以继承父主题的所有内容了。

子主题的工作方式

只用两种,:扩展,二:覆盖

扩展主要是针对php代码的,比如新增加一个函数,一个类,或者执行一段代码。 这里有个执行顺序的问题比如 子主题和父主题都有文件 functions.php的时候,应该先执行那个的问题。wordpress中先执行的是父主题的代码,然后才是子主题的代码。这样子主题的代码是在后面执行的,就可以很方便的进行修改。

覆盖 覆盖有模板文件的覆盖样式文件的覆盖, 所有如果想要保留父主题中的样式可以这样写 style.css

/*
 Theme Name: senlin-maxwell
 Template: maxwell
 */

/*引用一下父主题的样式*/
@import url("../twentytwelve/style.css");

/* 以下是子主题的样式*/
body {
 font-family: Arial, 微软雅黑, "Microsoft yahei";
}

模板文件的覆盖就很简单了,如果子主题中有个和父主题一样名字的模板,那么父主题的这个模板将会失去作用,而主题的这个模板将会被使用。

2 评论

回复

您的电子邮箱地址不会被公开。