如果用户已登录,则切换整个导航菜单

时间:2017-01-18 作者:Jason

当用户登录时,我试图有条件地切换整个导航菜单(不是导航项),但下面的代码更改了所有菜单。

我正在切换的菜单没有指向目标的主题位置,它是通过wp\\u nav\\u menu()添加的。

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

function foobar( $args ) {

    if ( is_user_logged_in() && $args[\'menu\'] == \'Non-Members Area\' ) {

        $args[\'menu\'] = \'Members Area\';

        return $args;
    }

}
如何定位菜单非成员区域?

1 个回复
SO网友:Dave Romsey

原始代码有几个问题。在if 陈述$args[\'menu\'] 正在设置为Non-Members Area (然后将计算为true)。看起来你真的想在那里做一个平等检查。避免这种情况的一个好方法是Yoda conditions.

此外$args 数组应始终返回,因此应将其移出条件语句。以下是原始代码的更新版本:

add_filter( \'wp_nav_menu_args\', \'foobar\' );
function foobar( $args ) {

    if ( is_user_logged_in() && \'Non-Members Area\' === $args[\'menu\'] ) {
        $args[\'menu\'] = \'Members Area\';
    }

    return $args;
}

相关推荐

Making sub-menus exclusive

我真的不知道该怎么解释我在这里找的东西,我在这里找得太露骨了。在我的网站上,我有一个附带菜单,其中包含一系列子类别,每个子类别中都有一些项目。我想知道当我打开另一个子类别时,是否有办法关闭所有其他打开的子类别,例如:1. Animals ----A. Cats ----B. Dogs 2. People ----A. Samantha ----B. Daniel 当我按下“动物”时,我希望“人”关闭,反之亦