锁定除两个特定用户以外的所有WordPress管理员

时间:2021-04-04 作者:Nigel Rodgers

我使用下面的代码片段锁定了除我之外的所有管理员和编辑器

if ( is_user_logged_in() ){
    $current_user = wp_get_current_user() ;
    if ( in_array( \'administrator\', (array) $current_user->roles ) || in_array( \'editor\', (array) $current_user->roles )) {
        if ($current_user->user_login != \'sheila\' ){
            wp_logout();
            return new WP_Error( \'login_again_please\', \'Please log in again\' );
        }
    }
}
当我尝试在第二个if语句中添加第二个用户时,我们都被锁定:

if ( is_user_logged_in() ){
    $current_user = wp_get_current_user() ;
    if ( in_array( \'administrator\', (array) $current_user->roles ) || in_array( \'editor\', (array) $current_user->roles )) {
        if (($current_user->user_login != \'john\' ) || ($current_user->user_login != \'sheila\' )){
            wp_logout();
            return new WP_Error( \'login_again_please\', \'Please log in again\' );
        }
    }
}
如何修复上述代码段,以允许两个具有特定用户名的管理员/编辑器登录,或者我可以有一个具有相同结果的替代方案?

2 个回复
最合适的回答,由SO网友:shanebp 整理而成

|| 表示。您的代码永远不会允许$current\\u用户继续,因为其中一个条件将失败。尝试使用和&& 而是:

if ( ($current_user->user_login != \'john\') && ($current_user->user_login != \'sheila\' ) ) {

SO网友:Nigel Rodgers

看起来会有用的!最后我用了这样的东西:

if( !($some_variable === \'uk\' || $another_variable === \'in\')){ 
    //this occurs when neither of the above are true
}
由@Habchi对此帖子的评论提供:https://stackoverflow.com/questions/19949923/simpler-way-to-check-if-variable-is-not-equal-to-multiple-string-values 如果有人不抢先一步,我会稍后发布完整的解决方案。

相关推荐

Redirecting from login

我希望我的站点在登录到site\\u url(“/”)后,为除“administrator”之外的所有用户重定向。我还希望admin\\u栏显示特定角色ie event\\u planner。除了当和event\\u planner登录并单击管理栏进入管理时,它会重定向到“/”之外,其他功能都正常工作。用于重定向的挂钩是“admin\\u init”,这显然是错误的。是否有另一个钩子可以用来在登录时重定向到/而不是在按下管理栏上的仪表板时重定向。谢谢