使用子主题避免更新覆盖掉自己修改的主题

WordPress技术博客wp应用技术

一些朋友在使用WEB主题公园所推出的主题时,由于自己会程序或者公司有程序员,会对主题进行一些修改,以达到自己想要的完全状态,但是在主题更新时,特别是付费主题更新时,是会下载主题压缩包覆盖掉之前的低版本的主题,这样,一些被修改的文件就会被覆盖掉,这样如果自己没有备份的话,之前自己所做的一些修改就完全失效了。

这是WordPress的一个更新机制,但是WordPress官方也给出了我们的一些解决方案,可以避免更新之后出现之前所修改的文件遭到覆盖的情况。

使用WordPress子主题修改和增加一些功能

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

WordPress具有子主题的方案,子主题创建好了之后,会调用父级主题的所有文件,子主题里面和父级主题相同的文件会优先调用子主题

这样的方式,你可以创建一个子主题,然后将想要修改的文件从父级主题复制出来,粘贴到子主题中修改,这样父级主题更新之后,子主题里面修改的文件不会受到任何影响。

子主题的函数会优先父级主题,启用了子主题之后,子主题的优先级别是大于父级主题的。

创建一个子主题

子主题的创建,你需要创建一个文件夹,比如lightpark(轻极企业WordPress主题)的子主题,创建文件夹lightpark_kid,然后只需要创建一个style.css,并按照如下方式写好编译格式即可。

/*
Theme Name:     轻极企业子主题
Theme URI:      http://www.themepark.com.cn/
Description:    轻极企业WordPress主题的子主题
Author:         web主题公园
Author URI:     http://www.themepark.com.cn
Template:       lightpark
Version:        1.0
*/

上面的代码和普通主题的style.css格式区别不大,只有一个增加了 那就是Template:    这个便是识别父级主题的编注,你只需要在这里标注父主题的文件夹名称即可

这样的文件夹和文件建立好了之后,你就可以在后台– 主题  看到你创建的子主题了。

启用这个主题,你会发现完全和父级主题一致,所有的文件都自动调用了父级主题,这样,子主题就创建成功了。

 

逐行的简单解释:

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

 

使用子主题修改和增加代码

创建好了子主题,现在复制父级主题的index.php  ,在里面输入一段文字或者代码,刷新看看你的网站,是否出现了修改的内容呢?  使用这样的方式修改你的主题吧,

在复制父级主题的文件时,请注意层级:

如  副主题文件夹下index文件夹 的 pic.php文件,若直接复制到子主题是无法生效的,必须建立和父级同样的层级,index文件夹,再将pic.php复制进去才会有效。

 

模板文件的替换方向:

模板文件 在子主题中的表现和style.css一样,它们会覆盖父主题中的相同文件。子主题可以覆盖任何父主题模板中的文件,只需要创建同名文件就行。(注意:index.php在WordPress3.0及以上版本才能被覆盖。)

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

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

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

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

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

 

修改时注意的方向

若你使用的WEB主题公园的付费主题,样式文件不会被替换,你需要重新编写load.php

替换掉这个函数cimy_uef_register_init_css  加载css的函数(函数的替换下方我们有介绍),或者,直接修改父级的css,这是因为我们的付费主题会自动判断移动设备,从而加载移动版主题,所以这里的功能子主题无法替换掉。这样你只需备份好css文件即可。

 

函数的替换和增加

子主题的functions.php提供了一个灵活稳定的方式来修改父主题的功能。如果你想在你的主题里加入一些PHP函数,最快的方式可能是打开functions.php文件然后加入进去。但那样并不灵活:下次你的主题升级更新了,你加入的新功能就会丢失掉。相反地,如果你使用子主题,将functions.php文件放进去,再将你想加入的功能写进这个文件里,那么这个功能同样会工作得很好,并且对于父主题以后的升级更新,子主题中加入的功能也不会受到影响。

functions.php文件的结构非常简单:将PHP起始标签置于顶部,关闭标签置于底部,它们之间就写上你自己的PHP函数。你可以写得很多,也可以写得很少,反正按你所需。下面的示例是一个基本的functions.php文件的写法,作用是将favicon链接加入到HTML页面的head元素里面。

如果是增加函数,直接在子主题的functions.php中增加即可,如果函数已经存在,那么你需要在父级主题找到此函数 使用下面的方式,进行替换

比如这样的函数:

<?php
 
function favicon_link() {
    echo '<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />' . "n";
}
add_action('wp_head', 'favicon_link');
 
?>

 

进行替换:

 

if (!function_exists('theme_special_nav')) {
    function theme_special_nav() {
        //  Do something.
    }
}

注意,替换的过程是在父级主题中,使用php的function_exists进行判断。

 

除了style.css,functions.php,index.php和home.php,子主题可以使用任何正式主题使用的类型的文件,只要文件被 正确链接。打个比方,你可以使用在样式表里或者Javascript文件里链接的图标、图片,或者从functions.php文件中调用出来的额外 PHP文件。

 

子主题的方式非常的灵活,但是也需要你掌握一定的php知识才能正确的修改和增加主题的内容,希望此文对你有所帮助!

 

上一篇:

下一篇:

文章评论

您好!请登录

取消回复
    展开更多