包括来自子主题的根或者包括来自父主题的根

时间:2013-08-20 15:17:20

标签: wordpress file include themes

目前我正在使用一个包含多个辅助函数文件的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中执行此操作?

或者我应该只调整上面的功能并添加参数,以便它也可以用于其他文件?不确定这是否有效。

1 个答案:

答案 0 :(得分:0)

要根据您的样本直接回答您的问题,我不会检查该文件是否已放置在子主题中。如果一个子主题开发人员已经自定义了该文件,他们可以简单地声明该函数并包含他们自己的文件(无论他们放在哪里)。不存在代码重复的风险,因为您的示例函数非常简单。

即使您为了将其置于此处而简化了代码....您仍然可以将包含在一个非常简单的函数中包含在内,该函数可以由子主题声明。这将使PHP保持高效运行,而不必一直检查文件。