很多用 WordPress 的同學都會有一個困惑,雖然很多主題都提供了豐富的設定,但是難免每個人的需求都不一樣,不可能都顧及,這時就必須得修改主題檔案來實現需要的效果。
但是在主題升級之後,修改過之後的檔案就會被覆蓋,又得再次修改,實在是麻煩。針對這一點,WordPress 使用了一個叫子主題的功能來解決。
所謂子主題,就是引用另一個主題同時又比被引用的主題優先順序高的主題,當你製作一個子主題,並把子主題連結到相應的父主題上,如果在子主題裡有模板檔案就會優先使用,子主題裡沒有模板檔案才會繼續呼叫父主題的模板檔案 (functions.php 除外,如果子主題和父主題都存在 functions.php 函式模板,那麼會按先子主題後父主題的順序同時引入) 。
簡單來說,子主題也是主題,繼承了父主題功能的同時又會覆蓋父主題的功能,利用子主題,可以修改和定製父主題,而且不同擔心父主題更新導致修改失效,因為子主題一直會存在。
建立子主題
子主題也可以看做一個單獨的主題,他只需要在主題目錄裡放一個 style.css 並在檔案裡寫上一些資訊就能生效。
下邊是一個清晰的目錄結構:
- wp-content
- themes(主題目錄)
- 薇曉朵 (父主題目錄)
- index.php(必須)
- style.css(必須)
- functions.php
- header.php
- footer.php
- (完整的模板)……
- 薇曉朵-Child(子主題目錄)
- style.css(必須)
- functions.php
- (可選部分的模板檔案,會覆蓋同名的父主題模板檔案)……
- 薇曉朵 (父主題目錄)
- themes(主題目錄)
style.css
style.css 檔案的內容決定了子主題的重要基本資訊,下圖是一個例子,框出來的部分是必須的資訊:

|
/* Theme Name: 薇曉朵 Child Theme URI: http://www.weixiaoduo.com Description: The template by <a href="http://www.bgbk.org"> 斌果</a>. Author: 斌果 Author URI: http://www.bgbk.org Template: 薇曉朵 Version: 1.0 */ |
程式碼解釋:
- Theme Name(必須):子主題名字
- Theme URI(可選):子主題的頁面
- Description(可選):子主題的描述
- Author(可選):子主題作者
- Author URI(可選):子主題作者的網站
- Template(必須):父主題目錄名,區分大小寫
- Version(可選):子主題版本
主要看加亮的必須引數就好,名字沒什麼好說,會在後臺顯示;Template 要注意,決定子主題歸屬於哪個父主題,要填寫父主題目錄名。
外掛建立子主題
有一個叫做 Orbisius Child Theme Creator 的外掛,可以一鍵建立子主題,我並沒有測試,感興趣的同學可以嘗試一下。
啟用子主題
經過上邊的操作,回到後臺的主題頁面就可以看到剛才建立的子主題了,啟用它。

可以發現和啟用父主題的效果是完全一樣的,只是主題的名字變成了 「薇曉朵 Child」 。
利用子主題定製父主題
子主題最終的用途是來定製父主題,比如要定製首頁的內容,只需要把相應的模板檔案放在子主題目錄,WordPress 檢測到就會自動優先呼叫。
functions.php
子主題比較特殊的一個檔案是 functions.php,他不會被覆蓋,而是按子父主題順序同時引入。
利用 functions.php 這個檔案就可以最大化的定製主題,不過需要父主題的配合和以及一定的 WordPress 外掛 API 知識。
下邊的例子在 head 標籤裡新增響應式網頁的元資訊:
|
functionBing_add_responsive_meta(){ echo'<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0" />'; } add_action('wp_head','Bing_add_responsive_meta'); |