我们的 Wordpress 网站要求某些页面仅对具有特定角色的用户可见。目前,管理员无法访问指定的页面$redaktor_pages和$mod_pages。
add_action( 'template_redirect', 'restrict_access' );
function restrict_access() {
//pages for admins
$admin_pages = is_page(array('veiledning-administrator', 'database'));
//pages for redaktør
$redaktor_pages = is_page(array('veiledning-redaktor'));
//pages for moderators
$mod_pages = is_page(array(''));
//users forum role
$forum_role = bbp_get_user_display_role( get_current_user_id() );
if( (!current_user_can('administrator') && $admin_pages) || ( (!current_user_can('editor') || !current_user_can('administrator') ) && $redaktor_pages ) || ( ($forum_role!='moderator' || !current_user_can('administrator')) && $mod_pages) ) {
wp_redirect('/');
exit;
}
}
我在 if 语句中使用逻辑运算符的地方:(a || b) && c函数似乎忽略了“b”。
我希望“管理员”角色也能够查看 $redaktor_pages 和 $mod_pages 中指定的页面,因为它包含在 if 语句中。
从逻辑上讲,我希望: (a = false || b = true) = true
实际发生的是“管理员”无法查看特定变量中列出的页面,除非它们是 $admin_pages
这使得 if 语句的那部分看起来好像是这样处理的: (a = false || b = true) = false
炎炎设计