问题描述

有没有办法在模板开始时自动运行 get_header(),最后是 get_footer()

目前我的代码与这些调用太重复了。

我一直在寻找一种方法来做到这一点,但是我在 Google 中找不到。

最佳解决方案

看看 wp-includes/template-loader.php … 似乎有一种方法:

if ( $template = apply_filters( 'template_include', $template ) )
    include( $template );

您可以挂接该过滤器,处理回调函数中的包含并返回 FALSE

示例代码,未测试:

add_filter( 'template_include', function( $template ) {

    get_header();
    include $template;
    get_footer();

    return FALSE;
});

次佳解决方案

@scribu 提出了一种减少 WordPress 模板中的代码重复的方法,他称之为 theme wrappers,它实现了您正在寻找的内容。 roots theme 使用轻微修改的 version of this method

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。