【发布时间】:2020-07-26 05:52:19
【问题描述】:
在WordPress 中,我想在首页显示与所有其他页面不同的菜单(没有插件)。我正在使用我自己创建的主题。
这是代码:
functions.php
register_nav_menus(
array(
'menu-1' => esc_html__( 'Main navigation', 'theme' ),
'menu-2' => esc_html__( 'Sub Menu', 'theme' ),
'menu-3' => esc_html__( 'Footer - Navigation', 'theme' ),
)
);
function theme_wp_nav_menu_args( $args = '' ) {
if( is_front_page() ) {
$args['menu-1'] = 'Main navigation - front page';
} else {
$args['menu-1'] = 'Main navigation - sub page';
}
return $args;
}
add_filter( 'wp_nav_menu_args', 'theme_wp_nav_menu_args' );
header.php(动态加载到所有页面)
<?php
wp_nav_menu(
array(
'theme_location' => 'menu-1',
'menu_id' => 'primary-menu',
)
);
?>
奇怪的是,这段代码在localhost 上工作。在将其上传到服务器并在WordPress 仪表板中进行了一系列更改后,它停止了工作。
我尝试重新创建该过程,但没有成功。所以现在我想知道,我的代码中有什么不正确的吗?我错过了什么?
编辑:
我尝试了不同的建议(谢谢大家,到目前为止!)。
如果我把它放在我的HTML 中,WordPress 将始终使用页脚导航作为主导航,即使在仪表板中,页脚被明确设置为这样 - 并且只有这样:
if( is_front_page() ) {
wp_nav_menu(array('menu'=>'menu-1','menu_id'=>'primary-menu'));
} else {
wp_nav_menu(array('menu'=>'menu-2','menu_id'=>'primary-menu'));
}
我觉得这很奇怪,因为在functions.php 中,页脚是menu-3。但是这段代码在任何地方都没有提到menu-3。
通过在我的HTML 中使用它,主导航显示为主导航,页脚仅显示为页脚:
wp_nav_menu(
array(
'theme_location' => 'menu-1',
'menu_id' => 'primary-menu',
)
);
我尝试了 vicky 对我的 functions.php 的建议,但我一直遇到同样的问题,即首页和其他页面使用相同的主菜单...
【问题讨论】:
-
所有仪表板更改是否正确在服务器中进行?喜欢在设置页面设置主页?
-
在页面设置中设置首页和博客页面。我再次设置它们并保存它以确保,但没有更改。在菜单设置中,`'主导航-子页面'`被设置为标准,与本地主机相同。如果我将“主导航-首页”设置为标准,它也会将其应用于子页面。在 localhost 上,由于我的 if 语句(我希望),它使用
'Main navigation - front page'作为首页。