WordPress 子主题的使用教程。

如果你从比如一为主题等地中购买过 WordPress 主题,那么相信你一定对个性化的修改主题并不陌生。比如你修改了主题的一个文件,那么当你更新以后,那将会是噩梦!因为你白修改了。此时,如果你没有备份,那么好了,恭喜,要重新修改。

这个时候 “子主题” 就诞生了。WordPress 子主题也是一个主题,它继承了另一个主题(父主题)的功能,并允许你对父主题的功能进行修改,或添加新功能。

创建一个子主题是很简单的。创建一个主题目录,将按照正确的 WordPress 格式编写正确的 style.css 文件放进去,一个子主题就做好了。紧接着,只需要对一个父主题的样式和布局进行修改和扩展,而不需要对父主题的文件作任何修改。通过这样的方式,当父主题被更新的时候,所做的修改依旧可以保存下来。

如果主题并不是自己写的,而且需要持久化更新,那么强烈建议使用 “子主题” 的方式,对主题进行修改。

一、目录树结构

  - wwwroot
    - ...
    - wp-content
      - ...
      - themes
        - ...
        - OneNav —— 父主题
        - OneNav-child —— 子主题,可自定义命名

像上面这样,子主题本身也是个主题,只是基于父主题 OneNav 而已。这也就意味着,它也一样必须要有 style.css。你也可以需要它有 functions.php、模板文件、其它文件,当然,这都是可选的。

二、style.css

众所周知,主题必须要有 style.css 来声明主题的信息。不过子主题就不太一样了,因为它要声明父主题。可以通过下面的例子来了解到。

/*
Theme Name:     One Nav (Child)
Theme URI:      https://example.com/
Description:    The example theme.
Author:         Elon Musk
Author URI:     https://example.com/author/
Template:       OneNav
Version:        1.0.1
*/

 

  • Theme Name:子主题名字(必须)
  • Theme URI:子主题的主页
  • Description:子主题的描述
  • Author:作者的名字
  • Author URI:作者的主页地址
  • Template:父主题目录名(必选),对大小写敏感!
  • Version:子主题版本号

温馨提示:当你更改子主题名字时,要先换成别的主题。

剩下的,就是和普通的 CSS 一样了,注释结束后,就可以自由的写 CSS 了。当然,你也可以不写。如果你懂的主题的 style.css 那么除了需要写父主题的目录名外,其它的都一致。

三、替换主题样式

比如,在 OneNav 主题中,默认的主题颜色是 #F1404B。当然了,也是 style.css 文件。

就像这样

父主题样式

它被写在了这里,但我知道,你根本没见过这个颜色(2023 年 04 月 08 日),不只你没见到过,我也没见到过,因为目前根本就没有。

一句回复

一般,看文章看到这里的,应该多少对 H5 + C3 有所了解。所以你就可以不用看主题,脑补样式。这很显然,就是一个变量。如果主题有用上过这个颜色,那么想要通过子主题修改它,我们只需要将子主题的 style.css 这样操作。

/*
Theme Name:     One Nav (Child)
Theme URI:      https://example.com/
Description:    The example theme.
Author:         Elon Musk
Author URI:     https://example.com/author/
Template:       OneNav
Version:        1.0.1
*/

/* 引入 OneNav 父主题的样式表 */
@import url("../OneNav/style.css");

/* 并覆盖掉那个变量 */
:root {
    --theme-color: #FFFFFF;
}

如此简单的,就完成了替换。

值得注意的是,@import 规则之前没有其他的 CSS 样式规则,如果你将其他的规则置于它之上,那么它将无效,并且父主题的样式表不会被导入。(后来者居上原则,被替换了)

四、functions.php

子主题中的 functions.php 不会覆盖父主题中对应功能,而是将新的功能加入到父主题的 functions.php 中(但子主题的 functions.php 会优先于父主题的文件加载)。使用这种方式,可以让子主题的 functions.php 修改父主题的功能更加灵活。

functions.php 和它的名字一样,就是写各种自定义方法函数的文件。

比如 WordPress 官方的一个例子,将页签图标挂到 HTML 头里:

' . "\n";
}

add_action('wp_head', 'favicon_link');

当然了,只要不是给自己写的程式,都建议判断不存在这个名字的函数的时候才会覆盖你现有的函数。就像下面这样:

if (!function_exists('my_func')) {
    function my_func() {
        return 'prkblog.cn';
    }
}

 

值得注意的是,替换的过程是在父级主题中,使用 PHP 的 function_exits 进行判断。所以,如果父主题没有使用这种方式,建议大家炎上作者,让他下一个版本更新出来。

五、模板文件

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

比如,OneNav 主题中,模板目录下有一个 “friendlink.php” 作为友情链接的模板文件。那么你只需要在子主题的 templates 中创建一个 “friendlink.php” 即可完成替换。

六、更多文件

除 style.css,functions.php,index.php 和 home.php 外,子主题可使用任何正式主题使用的类型的文件,只要文件被正确引用。

比如,你可使用在样式表里或者 JavaScript 文件里链接的图标、图片,或者从 functions.php 文件中调用出来的额外 PHP 文件。这一点和父主题的开发一样,因为子主题本质上就是基于父主题而替换部分资源的。

文章版权归原作者所有或来自互联网,未经允许请勿转载。如有侵权请联系我删除,谢谢!
THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录