當(dāng)前位置:首頁(yè)>WordPress建站>基礎(chǔ)教程>使用WordPress的子主題功能修改你的WordPress主題

使用WordPress的子主題功能修改你的WordPress主題

相信很多朋友使用的WordPress主題都經(jīng)過(guò)了自己的一些修改,好不容易折騰好了,主題的升級(jí)版發(fā)布了,要不要升級(jí)呢?升級(jí)以后,還得重新再次修改?郁悶啊!

其實(shí),你大可不必如此煩惱,使用Wordpress的子主題功能,一切問(wèn)題都可以迎刃而解!

WordPress 子主題簡(jiǎn)介

WordPress子主題也是一個(gè)主題,它繼承了另一個(gè)主題——父主題——的功能,并允許你對(duì)父主題的功能進(jìn)行修改,或者添加新功能。

創(chuàng)建一個(gè)子主題是很簡(jiǎn)單的。創(chuàng)建一個(gè)目錄,將格式編寫(xiě)正確的 style.css 文件放進(jìn)去,一個(gè)子主題就做成了!

只需要對(duì) HTML 和CSS 具有基本的了解,您就可以通過(guò)創(chuàng)建一個(gè)非常基本的子主題 來(lái)對(duì)一個(gè)父主題的樣式和布局進(jìn)行修改和擴(kuò)展,而不需要對(duì)父主題的文件作任何修改。

通過(guò)這樣的方式,當(dāng)父主題被更新的時(shí)候,您所做的修改就可以保存下來(lái)。

因?yàn)檫@個(gè)原因,我們強(qiáng)烈推薦您使用子主題的方式來(lái)對(duì)主題進(jìn)行修改。

如果您對(duì) PHP, WordPress Templates,和 WordPress Plugin API有個(gè)基本的理解,理論上來(lái)講,您可以使用子主題對(duì)父主題的每一個(gè)方面進(jìn)行擴(kuò)展,而不需要對(duì)父主題的文件進(jìn)行任何修改。

本文將說(shuō)明如何創(chuàng)建一個(gè)基本的子主題并解釋您能用它來(lái)干什么。本文將使用 WordPress 3.0 的默認(rèn)主題 Twenty Ten 作為父主題進(jìn)行舉例說(shuō)明。

目錄結(jié)構(gòu)

子主題放在wp-content/themes目錄下屬于自己的目錄里。下面的結(jié)構(gòu)顯示的就是子主題和它的父主題(Twenty Ten)在典型的WordPress目錄結(jié)構(gòu)中的位置:

  • public_html
    • wp-content
      • themes (主題存放的目錄)
        • twentyten (示例中父主題Twenty Ten的目錄)
        • twentyten-child (子主題存放的目錄,可以任意命名)
          • style.css (子主題中不可或缺的文件,文件名必需為 style.css)

這個(gè)文件夾里面可以少至只包含一個(gè)style.css文件,也可以包含多至一個(gè)完整WordPress主題所擁有的文件:

  1. style.css (必需)
  2. functions.php (可選)
  3. Template files (可選)
  4. Other files (可選)

讓我們看看它們是如何起作用的。

必需的style.css文件

style.css是一個(gè)子主題唯一必須的文件。它的頭部提供的信息讓W(xué)ordPress辨認(rèn)出子主題,并且重寫(xiě)父主題中的style.css文件

對(duì)于任何WordPress主題,頭部信息必須位于文件的頂端,唯一的區(qū)別就是子主題中的Template:行是必須的,因?yàn)樗學(xué)ordPress知道子主題的父主題是什么。

下面是一個(gè)style.css文件的頭部信息的示例:

/*
Theme Name:     Twenty Ten Child
Theme URI:      http: //example.com/
Description:    Child theme for the Twenty Ten theme
Author:         Your name here
Author URI:     http: //example.com/about/
Template:       twentyten
Version:        0.1.0
*/

逐行的簡(jiǎn)單解釋:

  • Theme Name. (必需) 子主題的名稱
  • Theme URI. (可選) 子主題的主頁(yè)。
  • Description. (可選) 子主題的描述。比如:我的第一個(gè)子主題,真棒!
  • Author URI. (可選) 作者主頁(yè)。
  • Author. (optional) 作者的名字。
  • Template. (必需) 父主題的目錄名,區(qū)別大小寫(xiě)。 注意: 當(dāng)你更改子主題名字時(shí),要先換成別的主題。
  • Version. (可選) 子主題的版本。比如:0.1,1.0,等。

*/ 這個(gè)關(guān)閉標(biāo)記的后面部分,就會(huì)按照一個(gè)常規(guī)的樣式表文件一樣生效,你可以把你想對(duì)WordPress應(yīng)用的樣式規(guī)則都寫(xiě)在它的后面。

要注意的是,子主題的樣式表會(huì)替換父主題的樣式表而生效。(事實(shí)上WordPress根本就不會(huì)載入父主題的樣式表。)所以,如果你想簡(jiǎn)單地改變父主題中的一些樣式和結(jié)構(gòu)——而不是從頭開(kāi)始制作新主題——你必須明確的導(dǎo)入父主題的樣式表,然后對(duì)它進(jìn)行修改。

下面的例子告訴你如何使用@import規(guī)則完成這個(gè)。

一個(gè)子主題的范例

這個(gè)例子中的父主題是Twenty Ten,我們喜歡這個(gè)主題的幾乎每個(gè)部分,除了網(wǎng)站標(biāo)題的顏色,因?yàn)槲蚁氚阉鼜暮谏母某删G色的。使用子主題的話,只用完成以下三個(gè)簡(jiǎn)單的步驟:

  1. wp-content/themes目錄下創(chuàng)建一個(gè)新目錄,并將它命名為twentyten-child(或其他你喜歡的名稱)。
  2. 將下面的代碼保存在名為style.css的文件里,并將它放到新建的這個(gè)文件夾。
  3. 到WordPress的控制臺(tái)>主題,然后激活你的新主題:Twenty Ten Child。
/*
Theme Name: Twenty Ten Child
Description: Child theme for the Twenty Ten theme
Author: Your name here
Template: twentyten
*/

@import url("../twentyten/style.css");

#site-title a {
    color: #009900;
}

下面一步步解釋上面代碼的作用:

  1. /* 開(kāi)啟子主題的頭部信息。
  2. Theme Name: 子主題名稱的聲明。
  3. Description: 主題的描述(可選,也可被省略)。
  4. Author: 作者名字的聲明(可選,也可被省略)。
  5. Template: 聲明子主題的父主題,換言之,父主題所在的文件夾的名稱,區(qū)分大小寫(xiě)。
  6. */子主題頭部信息的關(guān)閉標(biāo)記。
  7. @import規(guī)則將父主題的樣式表調(diào)入
  8. #site-title a 定義網(wǎng)站標(biāo)題的顏色(綠色),覆蓋父主題中相同的樣式規(guī)則。

注意 @import 規(guī)則

需要注意的是,@import 規(guī)則之前沒(méi)有其他的CSS樣式規(guī)則,如果你將其他的規(guī)則置于它之上,那么它將無(wú)效,并且父主題的樣式表不會(huì)被導(dǎo)入。

使用 functions.php

不像style.css,子主題中的functions.php不會(huì)覆蓋父主題中對(duì)應(yīng)功能,而是將新的功能加入到父主題的functions.php中。(其實(shí)它會(huì)在父主題文件加載之前先載入。)

這樣,子主題的functions.php提供了一個(gè)靈活穩(wěn)定的方式來(lái)修改父主題的功能。如果你想在你的主題里加入一些PHP函數(shù),最快的方式可能是打開(kāi)functions.php文件然后加入進(jìn)去。但那樣并不靈活:下次你的主題升級(jí)更新了,你加入的新功能就會(huì)丟失掉。相反地,如果你使用子主題,將functions.php文件放進(jìn)去,再將你想加入的功能寫(xiě)進(jìn)這個(gè)文件里,那么這個(gè)功能同樣會(huì)工作得很好,并且對(duì)于父主題以后的升級(jí)更新,子主題中加入的功能也不會(huì)受到影響。

functions.php文件的結(jié)構(gòu)非常簡(jiǎn)單:將PHP起始標(biāo)簽置于頂部,關(guān)閉標(biāo)簽置于底部,它們之間就寫(xiě)上你自己的PHP函數(shù)。你可以寫(xiě)得很多,也可以寫(xiě)得很少,反正按你所需。下面的示例是一個(gè)基本的functions.php文件的寫(xiě)法,作用是將favicon鏈接加入到HTML頁(yè)面的head元素里面。

<?php

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

?>

給主題作者的提示。事實(shí)上子主題的functions.php首先加載意味著你的主題的用戶功能可插入——即子主題是可替換的——通過(guò)有條件地進(jìn)行聲明。例如:

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

用這種方式,子主題可以替換父主題中的一個(gè)PHP函數(shù),只需要簡(jiǎn)單地對(duì)它再次聲明。

模板文件

模板文件 在子主題中的表現(xiàn)和style.css一樣,它們會(huì)覆蓋父主題中的相同文件。子主題可以覆蓋任何父主題模板中的文件,只需要?jiǎng)?chuàng)建同名文件就行。(注意:index.php在WordPress3.0及以上版本才能被覆蓋。)

同樣,這項(xiàng)WordPress的功能允許你修改父主題的樣式功能而不用去編輯父主題的文件,并且你的修改能讓你在更新父主題后繼續(xù)保留。

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

  • 增加一個(gè)父主題沒(méi)有提供的模板(例如:網(wǎng)站地圖頁(yè)面的模板,或者一單欄頁(yè)面,它們?cè)陧?yè)面編輯,模板選擇里是可用的)
  • 增加一個(gè)比父模板更加具體的模板(見(jiàn)模板級(jí)別)。(例如:新加的tag.php模板用于按tag歸檔的文章來(lái)代替父主題中通常的archive.php模板。)
  • 替換父主題中的一個(gè)模板.(例:使用你自己的home.php來(lái)覆蓋父主題中的home.php

其他文件

除了style.css,functions.php,index.php和home.php,子主題可以使用任何正式主題使用的類型的文件,只要文件被正確鏈接。打個(gè)比方,你可以使用在樣式表里或者Javascript文件里鏈接的圖標(biāo)、圖片,或者從functions.php文件中調(diào)用出來(lái)的額外PHP文件。

聲明:本站所有文章,如無(wú)特殊說(shuō)明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書(shū)籍等各類媒體平臺(tái)。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號(hào) WPDAXUE
基礎(chǔ)教程

在新窗口打開(kāi)WordPress文章中的所有鏈接

2012-12-12 5:39:00

基礎(chǔ)教程

WordPress主題演示/預(yù)覽插件:Wave Your Theme

2012-12-15 6:15:00

19 條回復(fù) A文章作者 M管理員
  1. 夢(mèng)來(lái)過(guò)

    你好博主!我也做自己的博客,不懂PHP很吃力,用了知更鳥(niǎo)的主題,但是子主題里面的widget.php文件始終用的父主題的,子主題怎么修改也不管用。根據(jù)您的經(jīng)驗(yàn)這是什么問(wèn)題呢?

  2. learnwordpress

    依文中介紹,我在/wp-content/themes/下新建了一個(gè)目錄。
    然后將父主題的style.css文件修改后放到新建目錄下。
    修改后style.css的內(nèi)容如下:

    /*
    Theme Name: zAlive child
    Theme URI: http://www.zenoven.com/themes/zAlive
    Author: zxy
    Author URI: http://www.zenoven.com/
    Description: zAlive is a responsive two columns theme with green and black color. With rich options you can custom the slider, excerpt, advertisement code,primary sidebar layout, copyright, nav menu, CSS style, scripts and more.
    Template: zAlive
    Version: 1.3.4
    */

    @import url(“../zAlive/style.css”);

    #site-title a {
    color: #009900;
    }

    可是刷新儀表盤(pán)后顯示: 缺失父級(jí)主題。請(qǐng)安裝“zAlive”父級(jí)主題。
    我的父主題目錄確實(shí)就是zAlive啊。是我哪里操作錯(cuò)了么?
    請(qǐng)大神指點(diǎn)~

    • 3618

      我也遇到一樣的問(wèn)題,在英文版的主題可以用,漢化的就顯示缺失父級(jí)主題

  3. 學(xué)習(xí) 理解中

?
個(gè)人中心
購(gòu)物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

南丹县| 漯河市| 溧阳市| 潞城市| 施甸县| 保山市| 江陵县| 陈巴尔虎旗| 利津县| 会理县| 满城县| 桃源县| 新田县| 南江县| 南澳县| 田东县| 布尔津县| 平邑县| 永川市| 都江堰市| 广元市| 萨嘎县| 镇坪县| 香格里拉县| 双流县| 新乡县| 嘉善县| 北安市| 蛟河市| 天祝| 阜康市| 民乐县| 龙岩市| 海盐县| 尖扎县| 新兴县| 梁山县| 安图县| 关岭| 拉孜县| 南京市|