php - PhP 否则如果不工作
问题描述
我正在尝试向特定会员级别显示特定菜单。如果会员是 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' );
解决方案
因为您使用||
(or) 运算符,所以如果成员已登录,则第一条语句始终有效。因此永远不会到达 else if。
改为使用&&
。您也只需创建$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';
}
推荐阅读
- android - 如何水平排列三个视图?
- ios - 使用 URL 显示 Facebook 用户图片 (Swift 5 | Xcode 10)
- html - 如何在 ionic 4 中使用 css 将时间线居中
- python - 使用列表推导创建使用 dict 值放在一起的字符串列表
- python - 如何通过命令提示符运行多个 python 文件
- python - 在 SymPy 中使用欧拉公式扩展 exp(I*theta)
- r - Modifying Strings to transform 1 into 01
- javascript - 我的扫雷游戏中添加的“地雷”数量不一致,我知道错误是什么但无法修复
- python - 为什么我的代码不能继续我想要的?
- linux - 在 bash 脚本的变量中收集外部脚本输出