我已在我的functions.php
add_action( 'after_setup_theme', 'register_my_menu' );
function register_my_menu() {
register_nav_menu( 'primary', __( 'Primary Menu', 'visio' ) );
register_nav_menu( 'onepage', __( 'One Page Menu', 'visio' ) );
}
One Page Menu
应仅显示在首页上,该首页使用的是自定义页面模板template-parts/page-homepage.php
Primary Menu
应显示在所有其他页面上。
但是,当我在header.php
中创建if条件时 - 它不起作用,它始终在首页和所有其他页面上显示One Page Menu
。
if(is_page_template('template-parts/page-homepage.php')) {
wp_nav_menu(
array (
'menu' => 'onepage',
'container' => false,
'container_id' => false,
'menu_class' => 'nav navbar-nav',
'menu_id' => false,
'depth' => 2,
'walker' => new Description_Walker
)
);
} else {
wp_nav_menu(
array (
'menu' => 'primary',
'container' => false,
'container_id' => false,
'menu_class' => 'nav navbar-nav',
'menu_id' => false,
'depth' => 2,
'walker' => new Description_Walker
)
);
}
我做错了什么?我怎样才能做到这一点?
答案 0 :(得分:2)
我想到的方法很少。
1)为主页和其他页面使用单独的header.php模板。
2)使用菜单位置设置。
3)使用设置选项并根据它们显示菜单
但是使用您的代码我认为您应该尝试使用
替换is_page_template('template-parts/page-homepage.php')
is_page_template('page-homepage.php')
作为
is_page_template()不适用于目录。
function is_page_template( $template = '' ) {
if ( ! is_page() )
return false;
$page_template = get_page_template_slug( get_queried_object_id() );
if ( empty( $template ) )
return (bool) $page_template;
if ( $template == $page_template )
return true;
if ( is_array( $template ) ) {
if ( ( in_array( 'default', $template, true ) && ! $page_template )
|| in_array( $page_template, $template, true )
) {
return true;
}
}
return ( 'default' === $template && ! $page_template );
}
2)使用菜单位置设置时,您可以使用
register_nav_menus( array(
'pluginbuddy_mobile' => 'PluginBuddy Mobile Navigation Menu',
'footer_menu' => 'My Custom Footer Menu',
) );
和
<?php
if ( has_nav_menu( 'footer_menu' ) ) {
wp_nav_menu( array( 'theme_location' => 'footer_menu' ) );
} ?>
控制菜单的显示。
3)使用设置选项,您可以使用update_option()
和get_option()
。