A 兒童主題是一個主題,它繼承了另一個主題(稱爲父主題)的功能和樣式。兒童主題是推薦修改現有主題的方式。
如何創建一個子主題
- 創建兒童主題目錄(至名兒童主題作爲父主題加上柴爾德常用的方法加在末尾。)
- 創建style.css
- 創建functions.php
樣式表必須與以下(樣式表頭)開始:
/*
Theme Name: XYZ Child Theme
Theme URI: http://example.com/themes/spacious/
Description: XYZ Child theme
Author: ABC
Author URI: http://example.com
Template: XYZ
Version: 1.0
*/
/* =Theme customization starts here
------------------------------------------------------- */
幾件事情要注意:
- 您將需要更換的細節示例文本與你的主題相關。
- 模板行對應於父主題的目錄名稱,因此進行相應調整。
的最後一步是排隊內部的functions.php家長和兒童主題樣式表是這樣的:
add_action('wp_enqueue_scripts', 'enqueue_parent_styles');
function enqueue_parent_styles() {
wp_enqueue_style('parent-style', get_template_directory_uri().'/style.css');
}
最後,激活子主題,在儀表板去Appearance->主題。尋找你創建的孩子主題並激活它。而已。另外,確保父主題也存在於已安裝的主題中,以使子主題正常工作。如果你現在訪問你的網站,它應該看起來都一樣,就像當父主題被激活時一樣。
現在,您可以在沒有任何問題的情況下對您的孩子主題進行更改!
如果你想修改父主題的功能,那麼你可以簡單地將其括在有條件的標籤,以檢查是否存在該名稱已經運行的函數:
<?php
if (! function_exists ('my_function')) {
function my_function() {
// Contents of your function here.
}
}
?>
所以,如果你包圍功能您在這樣的條件標籤中的父主題,WordPress會檢查你的子主題中是否有一個與已經運行的名字相同的函數,如果是這種情況,它將不會從父主題運行函數。
然後,當你來寫你的子主題要覆蓋一個父主題的功能,你只要給它相同的名稱作爲一個父主題:
<?php
function my_function() {
// Contents for your function override here.
}
?>
WordPress會首先在子主題中運行該函數,當涉及到父主題中的函數時,它將檢查它是否已經存在,並且因爲它確實存在,它將不會運行它。
如果你不希望碰父母的functions.php那麼你可以:
分配子主題功能更高的優先級:
add_action('init', 'child_function', 15);
刪除父主題從鉤子函數:
remove_action('init', 'parent_function');
您是上帝謝謝你對此詳細回答! (我upvoted你的答案) – Nayzen
謝謝!僅供參考,我不是上帝。我只是一個像你一樣的人,差別只是經驗。我已經做了幾年這些事情,現在你正在做。所以,不要擔心並繼續掙扎。有一天,你會在這個階段或者甚至比這更好! :) –
你是對的!你有一個良好的精神,再次感謝你驚人的答案,我希望能夠在今後幫助別人,就像你今天爲我做的:)順便說一句,我陷入了其他問題,包括做同樣的,但與.css文件,我已經在這裏打開了一張票https://stackoverflow.com/questions/44627617/wordpress-stylesheet-child-theme – Nayzen