我有一个带有“关于”菜单的“关于”页面。但是,我还想要一个带有自己菜单的“资源”页面。但是,无论我如何编辑模板文件,“关于”菜单似乎都会显示在“资源”页面上。
functions.php
function hab_register_menu() {
register_nav_menu( 'header-menu', __( 'Header Menu' ) );
register_nav_menu( 'about-menu', __( 'About Menu' ) );
register_nav_menu( 'resources-menu', __( 'Resources Menu' ) );
}
add_action( 'init', 'hab_register_menu' );
page-resources.php
<?php get_header(); ?>
<main id="content" class="container">
<div id="main">
<?php while ( have_posts() ) : the_post();
the_title( sprintf( '<h1 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h1>' );
the_content();
endwhile; ?>
</div> <!-- #main -->
<aside id="sidebar">
<?php wp_nav_menu( array(
'Theme_location' => 'resources-menu',
'menu_class' => 'v-menu',
'container' => false
) );
?>
</aside> <!-- #sidebar -->
</main> <!-- #content .container -->
<?php get_footer();?>
答案 0 :(得分:0)
据我所知,PHP数组键是case-sensitive。尝试从以下位置更新阵列:
'Theme_location' => 'resources-menu',
收件人:
'theme_location' => 'resources-menu',
因此,我认为您的主题实际上没有解析theme_location
,因此它使用default usage functionality来退回到第一个非空的已注册菜单。
如果/由于不起作用,您可以尝试其他一些方法。 register_nav_menu()
实际上具有复数姐妹函数register_nav_menus()
。您可以尝试以这种方式注册它们(自WP 3.0以来,这是注册多个菜单的典型方法):
ANSWER [询问者的笔记] 我想可以调用该函数的单数版本有一个限制。
function hab_register_menu() {
register_nav_menus( array(
'header-menu' => __( 'Header Menu' ),
'about-menu' => __( 'About Menu' ),
'resources-menu' => __( 'Resources Menu' )
) );
}
add_action( 'init', 'hab_register_menu' );
如果这也不起作用,您可以考虑将menu
参数添加到wp_nav_menu()
:
'menu' => 'resources-menu'
如果那个不起作用,您确定WordPress可以正确找到您的Page Template吗?假设您的网页上的标签实际上是page-{slug}.php
,那么它应该基于Template Hierarchy找到resources
。如果不是,请考虑添加文件头,即在page-resources.php
文件的顶部添加以下内容:
/**
* Template Name: Resources
*/
然后在页面编辑器的侧边栏中选择新的“资源”页面模板。
您还可以简单地修改page.php
(或您的主题的等价物)以基于当前页面进入菜单:
<?php get_header(); ?>
<main id="content" class="container">
<div id="main">
<?php while ( have_posts() ) : the_post();
the_title( sprintf( '<h1 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h1>' );
the_content();
endwhile; ?>
</div> <!-- #main -->
<aside id="sidebar">
<?php
if( is_page( 'Resources' ) ){
$theme_location = 'resources-menu';
} else if( is_page( 'About' ) ){
$theme_location = 'about-menu';
} else {
$theme_location = 'header-menu';
}
wp_nav_menu( array(
'theme_location' => $theme_location,
'menu_class' => 'v-menu',
'container' => false
) );
?>
</aside> <!-- #sidebar -->
</main> <!-- #content .container -->
<?php get_footer();?>