目前我正在使用一个包含多个辅助函数文件的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 :(得分:0)
要根据您的样本直接回答您的问题,我不会检查该文件是否已放置在子主题中。如果一个子主题开发人员已经自定义了该文件,他们可以简单地声明该函数并包含他们自己的文件(无论他们放在哪里)。不存在代码重复的风险,因为您的示例函数非常简单。
即使您为了将其置于此处而简化了代码....您仍然可以将包含在一个非常简单的函数中包含在内,该函数可以由子主题声明。这将使PHP保持高效运行,而不必一直检查文件。