如果不起作用,请使用PhP

如果不起作用,请使用PhP,php,html,wordpress,Php,Html,Wordpress,我正在尝试显示特定成员级别的特定菜单。 如果该成员为2级,他将获得正确的菜单。 但如果他是三级,菜单“nexusmitglied”就不会出现 我做错了什么 function my_wp_nav_menu_args( $args = '' ) { $member_level = SwpmMemberUtils::get_logged_in_members_level(); if((SwpmMemberUtils::is_member_logged_in()) || ($member

我正在尝试显示特定成员级别的特定菜单。 如果该成员为2级,他将获得正确的菜单。 但如果他是三级,菜单“nexusmitglied”就不会出现

我做错了什么

function my_wp_nav_menu_args( $args = '' ) {
    $member_level = SwpmMemberUtils::get_logged_in_members_level();
    if((SwpmMemberUtils::is_member_logged_in()) || ($member_level == "2")) { 
        $args['menu'] = 'logged-in';
    } 
    $member_level = SwpmMemberUtils::get_logged_in_members_level();
    else if((SwpmMemberUtils::is_member_logged_in()) || ($member_level == "3")) { 
        $args['menu'] = 'nexusmitglied';
    } else 
    {
        $args['menu'] = 'logged-out';
    }
    return $args;
}  
add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );

由于使用了
|
(or)运算符,因此如果成员登录,则第一条语句始终有效。因此,永远无法到达else if

改用
&
。您还只需创建一次
$member\u level
。在if语句中省去多余的大括号,因为它们不需要,只会使代码混乱。对普通字符串使用单引号。Php需要双引号之间的变量,因此单引号的解析速度总是比双引号快

$member_level = SwpmMemberUtils::get_logged_in_members_level();

if(SwpmMemberUtils::is_member_logged_in() && $member_level == '2') { 
    $args['menu'] = 'logged-in';
} else if(SwpmMemberUtils::is_member_logged_in() && $member_level == '3') { 
    $args['menu'] = 'nexusmitglied';
}

在关闭大括号后,您重新定义了
$member\u level
变量
}
用于
if语句
,但在启动
else if语句之前,它实际上导致了语法错误。这不是问题所在,它与bothI一起工作,但没有提供解决方案。我指出了你的语法中的一个错误,Joris Wagger在他的代码中纠正了这个错误。很高兴它帮助了你。我的荣幸!您好,我有一个问题,当我想在3、4和5级显示菜单“nexusmitglied”时,我应该写什么?知道了!只需将其与$member_level=='4'一起添加,您需要将其放在大括号之间,以便它仍然检查是否有成员登录。不要使用
运算符,而是使用
|
。像这样:
else如果(SwpmMemberUtils::is_member_logged_in()&($member_level='3'| |$meber_level='4'| |$member_level='5')
或者您可以在
数组中使用
来缩短它
else if(SwpmMemberUtils::是否已登录成员()&&in_数组($member_level,['3','4','5'))