1 回答

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個贊
所以這里有 3 組條件,如果其中任何一個條件為真,則訪問被拒絕。
對于您的第二個和第三個條件,您的問題說您正在使用,(a || b) && c但事實(shí)并非如此。你正在與之合作,(!a || !b) && c這是一件非常不同的事情。想想OR和的組合是什么NOT意思。兩個條件都被評估,其中一個為真導(dǎo)致條件為真。
因此,當(dāng)您檢查是否是管理員時NOT editor OR NOT administrator,條件評估為真,因?yàn)樗麄兪荖OT編輯者。您想用它AND來檢查兩個條件是否都為真。檢查管理員的NOT editor AND NOT administrator評估結(jié)果為 false。
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;
}
}
請注意,&&具有更高的優(yōu)先級,||因此您在此處獲得的額外括號是隱含且不必要的。但我發(fā)現(xiàn)無論如何最好明確包含它們。
- 1 回答
- 0 關(guān)注
- 156 瀏覽
添加回答
舉報