2017-06-20 126 views
0

其實我建立一個網站使用WordPress的,一切工作,但現在我需要在functions.php,原始的一個在父文件夾中添加一些變化,所以我應該怎麼做?是否有可能複製functions.php子主題內的所有內容,然後添加更改?WordPress的functions.php兒童主題

由於未來的主題更新,我不想在父文件夾中添加更改。但請告訴我這是否是唯一的選擇。

編輯:「不要將父主題的functions.php的完整內容複製到子主題的functions.php中。」是來自WordPress的建議Codex https://codex.wordpress.org/Child_Themes

編輯2:[已解決]請看下面的答案。

回答

1

A 兒童主題是一個主題,它繼承了另一個主題(稱爲父主題)的功能和樣式。兒童主題是推薦修改現有主題的方式。

如何創建一個子主題

  1. 創建兒童主題目錄(至名兒童主題作爲父主題加上柴爾德常用的方法加在末尾。)
  2. 創建style.css
  3. 創建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那麼你可以:

  1. 分配子主題功能更高的優先級:

    add_action('init', 'child_function', 15); 
    
  2. 刪除父主題從鉤子函數:

    remove_action('init', 'parent_function'); 
    
+0

您是上帝謝謝你對此詳細回答! (我upvoted你的答案) – Nayzen

+0

謝謝!僅供參考,我不是上帝。我只是一個像你一樣的人,差別只是經驗。我已經做了幾年這些事情,現在你正在做。所以,不要擔心並繼續掙扎。有一天,你會在這個階段或者甚至比這更好! :) –

+0

你是對的!你有一個良好的精神,再次感謝你驚人的答案,我希望能夠在今後幫助別人,就像你今天爲我做的:)順便說一句,我陷入了其他問題,包括做同樣的,但與.css文件,我已經在這裏打開了一張票https://stackoverflow.com/questions/44627617/wordpress-stylesheet-child-theme – Nayzen