不,不幸的是,你不能那样做,因为get_header( $name )
没有用于的筛选器$name
(它只在操作调用中传递名称)。
但是,如果您愿意修改header.php
每个站点的文件,在文件开头有如下内容:
<?php
if ( apply_filters( \'load_custom_header\', false ) ) {
$custom_header = apply_filters( \'get_custom_header\', \'\' );
if ( \'\' != $custom_header ) {
// Get the header that we just received
// and call the native \'get_header\' function
// as usual
get_header( $custom_header );
// By calling \'return\' we are skipping
// parsing this template any further
return;
}
}
然后,您可以像这样控制要加载的标题(您可以将此代码放在插件中或
functions.php
文件):
// We are hooking to the \'load_custom_header\' filter
// and return a value of \'true\' meaning that we want to
// load a custom header
add_filter( \'load_custom_header\', \'__return_true\', 99 );
add_filter( \'get_custom_header\', function( $header ) {
// Figure out what header you want
$some_condition = true;
if ( $some_condition ) {
$header = \'new\';
}
return $header;
}, 99 );
明显的优点是,您不必修改所有
get_header
来自所有模板的调用:
single.php
,
page.php
等等。您可以在一个地方控制所有这些。