2013-08-20 104 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