2013-08-20 143 views
0

目前我正在與包含多個輔助功能文件的functions.php的Wordpress主題工作。如果兒童主題是基於主題製作的,我希望這個主題非常靈活和可定製。包括從兒童主題根目錄或包括從父主題根目錄

我有這樣一段代碼目前在我的functions.php:

add_action('template_redirect', 'wpf_contact'); 
/** 
* Include the logic/settings for tpl-contact.php. 
* 
* Includes the logic/settings for tpl-contact.php. It will load the child's 
* mail.inc.php first if that is available. 
*/ 
if (! function_exists('wpf_contact')) { 
    function wpf_contact() { 

     if (is_page_template('tpl-contact.php') && is_child_theme() && file_exists(get_stylesheet_directory() . '/inc/wpf/mail.inc.php')) { 
      include(get_stylesheet_directory() . '/inc/wpf/mail.inc.php'); 
     } else { 
      include(get_template_directory() . '/inc/wpf/mail.inc.php'); 
     } 

    } // end wpf_contact() 
} 

什麼上面的代碼確實是從子載荷mail.inc.php如果存在的文件。如果它不從父主題加載它。

原因我有多個文件想加載。我在想,這可能不是一個更簡單的方法嗎?有沒有一個內置函數在WordPress中做到這一點?

或者我應該只是調整上述函數並添加參數,以便它可以用於其他文件?不知道這是否有效。

+0

此問題屬於[wordpress.se]。 – brasofilo

+0

Tnx,我已經爲它加書籤! – Ilyes512

回答

0

要根據您的示例直接回答您的問題,我不會檢查文件是否已放置在兒童主題中。如果一個孩子主題的開發者已經定製了這個文件,他們可以簡單地聲明這個函數並且包含他們自己的文件(無論他們在哪裏放置它)。沒有代碼重複的風險,因爲您的示例函數足夠簡單。

即使您爲了將其放置在此處而簡化了代碼....您始終可以將包含在一個可以由兒童主題聲明的非常簡單的函數中。這將保持PHP運行的高效率,而不必一直檢查文件。

+0

嗯,有趣。我完全忽略了你可以簡單地將函數添加到子主題function.php,謝謝!如果我沒有在這裏問過,我可能會用一個函數來檢查每次使用子主題時是否存在文件。 – Ilyes512