在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,它停止工作。
我试图重新创建该过程,但没有成功。所以现在我想知道,我的代码中有什么不正确的吗?我错过了什么?
编辑:
我尝试了不同的建议(谢谢大家,到目前为止!)。
如果我把它放在我的 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任何地方。
通过在 my 中使用它HTML,主导航显示为主导航,页脚仅显示为页脚:
wp_nav_menu(
array(
'theme_location' => 'menu-1',
'menu_id' => 'primary-menu',
)
);
我尝试了 vicky 对我的建议的建议functions.php,但我一直遇到同样的问题,即相同的主菜单用于首页和其他页面......