我在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。
我们将非常感谢您的帮助!
答案 0 :(得分:0)
使用Wordpress提供的内置条件:
is_home()
- https://developer.wordpress.org/reference/functions/is_home/ is_front_page()
- https://codex.wordpress.org/Function_Reference/is_front_page 如果您已将主页设置为显示最新帖子,则应使用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; ?>