Wordpress:页面上的不同菜单

时间:2018-08-13 23:03:45

标签: php wordpress themes

我有一个带有“关于”菜单的“关于”页面。但是,我还想要一个带有自己菜单的“资源”页面。但是,无论我如何编辑模板文件,“关于”菜单似乎都会显示在“资源”页面上。

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();?>

Website

1 个答案:

答案 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();?>