如何只在某个页面上显示Wordpress二级菜单?

时间:2016-09-11 10:18:24

标签: php html css wordpress

我在function.php文件中添加了我的二级菜单,WordPress也允许我选择二级菜单。问题是菜单栏同时出现,所以我的主页顶部有双菜单栏,也有我的关于我们的页面。我尝试做的只是在我的主页面上显示我的主菜单栏,并在我的关于我们页面,服务页面等上显示二级菜单......我该如何解决?

function.php 文件

register_nav_menus( array(
        'primary' => esc_html__( 'Primary', 'themename' ),
        'secondary' => __( 'Secondary Menu', 'themename' ),
    ) );

Header.php 文件

    <?php if ( has_nav_menu( 'primary' ) 

       'theme_location'    => 'secondary',
       'container'          => 'nav',
       'container_class'    => 'navbar navbar-default',
       'menu_class'        => 'nav navbar-nav navbar-right'
; ?>
        <?php
    if ( has_nav_menu( 'secondary_navigation_menu' ) ) {
         wp_nav_menu( array( 'theme_location' => 'secondary_navigation_menu' ) );
    } ?>

        <?php if ( is_home() ): ?>
<?php if ( has_nav_menu( 'primary' ) : ?>
     //primary menu
<?php endif; ?>
<?php endif; ?>

P.S。我的两个菜单栏都是不同的CSS。

我们将非常感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

使用Wordpress提供的内置条件:

如果您已将主页设置为显示最新帖子,则应使用is_home(),如果您已通过Reading > Settings > Front page displays将首页设为首页,则应使用{{ 1}}。

将这些菜单功能包含在适用于您案例的条件语句中。

您也可以将它们组合在一起:

is_front_page()

如果相关网页不是主页或首页,则上述条件语句将返回<?php if ( !(is_front_page() || is_home()) ) { wp_nav_menu( array( 'theme_location' => 'secondary', 'container' => 'nav', 'container_class' => 'navbar navbar-default', 'menu_class' => 'nav navbar-nav navbar-right' ) ); } ?>

您还可以使用true条件标记来检查任何其他页面。

此函数允许您在其括号中传递可选参数,以使用(int | string | array)页面ID,标题,段塞或数组来定位特定页面或页面数。

答案 1 :(得分:0)

您可以在您希望单独的页面中调用辅助菜单。 通过使用is_page(),您可以在任何地方显示菜单。

//显示任何单个页面时。

is_page();

//正在显示第42页(ID)。

is_page( 42 );

//当页面的post_title为&#34; Contact&#34;正在展示。

is_page( 'Contact' );

//当页面的post_name(slug)为&#34; about-me&#34;正在展示。

is_page( 'about-me' );

例如,如果要在home页面以外的所有页面中显示辅助菜单,则可以使用此类代码。

<?php
if (!is_home())
{
   // Here you can display the Secondary menu
  if ( has_nav_menu( 'secondary-menu' ) ) { /* if menu location 'secondary-menu' exists then use custom menu */
  wp_nav_menu( array( 'theme_location' => 'secondary-menu') ); 
}     
else
{
   // here you can display the primary menu.
   if ( has_nav_menu( 'primary-menu' ) ) { /* if menu location 'primary-menu' exists then use custom menu */
  wp_nav_menu( array( 'theme_location' => 'primary-menu') ); 
}    
?>

现在,主菜单将仅在about-me页面中显示。

is_page()也支持数组:

if( is_page( array( 'about-us', 'contact', 'management' ) )
     //either in about us, or contact, or management page is in view
else
     //none of the page about us, contact or management is in view

替换您在下方提供的header.php

你的Header.php需要像这样改变。您在function.php文件中编写了用于注册菜单和其他代码的所有其他代码,请不要在header.php文件中将其混合。

<?php
        if(is_home() || is_front_page()) // This ensures that the below part execute for home page or front page alone
        {
                if ( has_nav_menu( 'primary-menu' ) ) { 
                /* if menu location 'primary-menu' exists then use custom menu */
                wp_nav_menu( array( 'theme_location' => 'primary-menu') ); 
                }    
        }
        else
        {
                if ( has_nav_menu( 'secondary_navigation_menu' ) ) {
                wp_nav_menu( array( 'theme_location' => 'secondary_navigation_menu' ) );
                }
        }
?>

答案 2 :(得分:0)

如果你通过header.php应该有类似的东西。

if ( has_nav_menu( 'primary' ) : ?>

现在在你的functions.php中注册另一个菜单位置

register_nav_menus( array(
    'secondary_menu' => 'Secondary Navigation Menu',
    'secondary_navigation_menu' => 'My Custom Footer Menu',
) );

if ( has_nav_menu( 'primary' ) : ?>部分之后应该有代码来显示类似

的菜单
 wp_nav_menu( array( 
       'theme_location'    => 'secondary',
       'container'          => 'nav',.......

之后添加

<?php
    if ( has_nav_menu( 'secondary_navigation_menu' ) ) {
         wp_nav_menu( array( 'theme_location' => 'secondary_navigation_menu' ) );
    } ?> 

现在只在主页包装中显示主菜单is_home(),如

<?php if ( is_home() ): ?>
<?php if ( has_nav_menu( 'primary' ) : ?>
     //primary menu
<?php endif; ?>
<?php endif; ?>

如果您希望主菜单不显示在主页上,请执行

<?php if ( ! is_home() ): ?>
    <?php if ( has_nav_menu( 'secondary_navigation_menu' ) : ?>
         //secondarymenu
    <?php endif; ?>
    <?php endif; ?>