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 中是否有内置函数可以执行此操作?

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

4

1 回答 1

0

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

即使您为了将代码放在这里而简化了代码……您也可以始终将包含包装在一个非常简单的函数中,该函数可以由子主题声明。这将使 PHP 保持高效运行,而不必一直检查文件。

于 2013-08-21T18:07:50.197 回答