两个不同地点的两个不同菜单?

时间:2015-11-17 作者:Mane Sandoval

我正在尝试根据访问的页面更改主菜单和次菜单中的菜单。

我的主菜单位于页面顶部,它如下所示:


索引|关于|联系人

我的第二个菜单是一个下拉菜单,在标题下,它如下所示:

编写新的|帮助|配置文件|

所以,问题是,例如,每当你访问个人资料时,我都想更改我已经创建的其他人的两个菜单。

所以在阅读中,我发现了一些东西,但它根本不起作用:在文件函数中。我添加的php:

add_filter( \'wp_nav_menu_args\', \'my_wp_nav_menu_args\' );

function my_wp_nav_menu_args( $args) {
if( is_page(\'2\') ) {
        $args[\'menu\'] = \'Original Menu\';
} else {
        $args[\'menu\'] = \'Menu for Profile\';
}
    return $args;
}
它可以工作,但它会用“配置文件菜单”更改主菜单和次菜单,我只希望它用于主菜单。我尝试添加[\'theme\\u location\']=“primary”,但它会使两个菜单都消失。

我希望你能帮助我,谢谢。

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

您很可能错误地使用了主题位置部分。下面是一个应该如何做的示例

按照代码中的注释进行解释:-)

add_filter( \'wp_nav_menu_args\', function ( $args ) 
{
    if (    is_page( 2 ) //Only target page 2 
         && $args[\'theme_location\'] === \'primary\' ) { // Check and only target the primary menu
    ) {
        $args[\'menu\'] = \'Menu for Profile\';
    }
    return $args;
});  

SO网友:Omar

您必须创建两个菜单并使用条件输入调用它们header.php 文件,如下所示:

if ( is_page( \'about\' ) ) { 
    wp_nav_menu( array(
        \'menu\'           => \'primary\', 
        \'theme_location\' => \'primary\'
    ) ); 
} else { 
    wp_nav_menu( array(
        \'menu\'           => \'second_menu\', 
        \'theme_location\' => \'primary\'
    ) );
}

相关推荐

无法将设置添加到“NAV_MENUS”定制器面板

我试图在自定义程序的“菜单”面板中添加一个复选框,但由于某些原因,它没有显示出来。如果我尝试将其从“nav\\u菜单”更改为“title\\u tagline”或“colors”,复选框会显示得很好。是什么阻止它显示在“菜单”面板上?// add custom options to the Customizer function nssra_customizer_options($wp_customize) { // add \"menu primary flex\" checkb