get_header()
接受参数,使用它可以调用不同的标头。
唯一能get_header()
是否包含在模板中,其中称为文件\'header.php\'
来自子主题(如果存在)或来自主题。
如果使用参数$name
, 像这样:get_header( $name)
, 函数将查找名为\'header-{$name}.php\'
.
例如:您想为主页使用不同的标题。
所以您创建了一个名为\'header-home.php\'
然后在文件中\'home.php\'
而不是打电话get_header()
你可以打电话get_header( \'home\' )
包括\'header-home.php\'
而不是\'header.php\'
.
如果有多个标题,则可能在所有文件中重复相同的部分。
为了避免这种情况并使用干代码,您可以提取一些部分并放入单独的文件中,然后通过get_template_part()
.
例如:
<?php
// header.php
get_template_part(\'header\', \'start\'); // header-start.php contain html tag and other stuff
wp_head(); // should always be called in header
get_template_part(\'header\', \'navigation\'); // header-navigation.php for menu
<?php
// header-home.php
get_template_part(\'header\', \'start\');
wp_head();
get_template_part(\'header\', \'navigation\');
get_template_part(\'header\', \'navigation2\'); // header-navigation2.php for additional nav
get_template_part(\'header\', \'home\'); // header-home.php contain stuff specific to home
然而,这只是一个示例,演示了如何创建不同的头文件,而不必重复代码。
因为奖励是完全对儿童主题友好的(在儿童主题中,您甚至可以使用父主题中的其他“片段”替换一个“片段”)。
编辑有关动态设置$name
基于当前模板的参数,做起来相对容易。
您可以使用template_include
钩子以设置全局可访问变量,并将其用作get\\u头的参数。
add_filter( \'template_include\', \'my_theme_sniff_template\', 99999);
function my_theme_sniff_template( $template ) {
$info = pathinfo( $template );
global $my_theme_cur_tmpl;
$my_theme_cur_tmpl = $info[\'filename\'];
return $template;
}
使用这样的代码,在模板文件中可以使用
get_header( isset($GLOBALS[\'my_theme_cur_tmpl\']) ? $GLOBALS[\'my_theme_cur_tmpl\'] : \'\' );
the
$GLOBALS[\'my_theme_cur_template\']
将包含当前模板的文件名(不带扩展名)。所以对于
home.php
会的
\'home\'
等等
所以get_header
将自动搜索\'header-home.php\'
, \'header-front-page.php\'
, \'header-single.php\'
, \'header-page.php\'
等等
但不要担心:如果找不到特定于模板的头文件,则不必为任何模板创建头文件,get_header
将自动加载标准\'header.php\'
.