我正在尝试向特定成员级别显示特定菜单。 如果成员是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' );
答案 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';
}