PhP Else如果不起作用

时间:2018-07-28 20:01:17

标签: php html wordpress

我正在尝试向特定成员级别显示特定菜单。 如果成员是2级,则他会获得正确的菜单。 但是如果他是3级,则不会显示“ 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' );

1 个答案:

答案 0 :(得分:1)

由于使用了||(或)运算符,因此,如果成员已登录,则第一条语句始终有效。因此,如果从未达到,则为else。

改为使用&&。您还只需创建一次$member_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';
}