问题描述
例如,在我的博客页面上,我使用 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_footer
,get_sidebar
和 get_template_part_{$slug}
。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。