问题描述

例如,在我的博客页面上,我使用 get_header('blog');,但我不想创建一个名为 header-blog.php 的新标题模板,因为我只是想做一个小的调整。有可能以某种方式在我的 header.php 文件中获取此名称参数?

最佳解决方案

有一个可以使用的动作 get_header 。在您的主题 functions.php 中,为该操作注册回调:

add_action( 'get_header', function( $name ) {
    add_filter( 'current_header', function() use ( $name ) {
        // always return the same type, unlike WP
        return (string) $name;
    });
});

你也可以编写一个可以重用的小帮手类:

class Template_Data {

    private $name;

    public function __construct( $name ) {

        $this->name = (string) $name;
    }

    public function name() {

        return $this->name;
    }
}

add_action( 'get_header', function( $name ) {
    add_filter( 'current_header', [ new Template_Data( $name ), 'name' ] );
});

在您的 header.php 中,您将获得当前的零件/名称:

$current_part = apply_filters( 'current_header', '' );

您可以使用 get_footerget_sidebarget_template_part_{$slug}

参考文献

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