多用户维护模式功能- PHP数组不工作


maintenance mode function for multiple users - php array not working?

我已经创建了一个维护模式函数,但我只能让它为一个用户名工作。

get_currentuserinfo();
global $current_user;
// MAINTAINANCE MODE
function website_site_maintenance() {
    global $current_user;
    if ( 'josh' != $current_user->user_login ) {
       // vars
       $logout_url = wp_login_url().'?mode=maintenance';
       wp_logout();
       wp_redirect( $logout_url, 302 );
    }     
}
add_action('get_header', 'website_site_maintenance');
add_action('admin_init', 'website_site_maintenance');

// CUSTOM LOGIN MESSAGES
function website_my_login_message() {
    if( $_GET['mode'] == 'maintenance' ){
        $message = '<p class="message"><b>Site undergoing maintenance.</b></p>';
        return $message;
    }
}
add_filter('login_message', 'website_my_login_message');

上面的功能可以工作,但是我想添加更多的维护用户。

所以我试过这个,但它不工作…

// MAINTAINANCE MODE
function website_site_maintenance() {
    global $current_user;
    $maintenance_users = array('josh','george','bob');
    if ( $maintenance_users != $current_user->user_login ) {
       // vars
       $logout_url = wp_login_url().'?mode=maintenance';
       wp_logout();
       wp_redirect( $logout_url, 302 );
    }     
}

我只是尝试将用户添加到一个数组中。

$maintenance_users = array('josh','george','bob');

不使用

if ( $maintenance_users != $current_user->user_login ) {
   // vars
   $logout_url = wp_login_url().'?mode=maintenance';
   wp_logout();
   wp_redirect( $logout_url, 302 );
}
使用

if ( !in_array($current_user->user_login, $maintenance_users) ) {
   // vars
   $logout_url = wp_login_url().'?mode=maintenance';
   wp_logout();
   wp_redirect( $logout_url, 302 );
}

你遇到的问题是,你正在比较一个数组和一个字符串,这是行不通的。在"正确"版本中,您将检查当前登录用户的用户名是否在您指定的阵列$maintenance_users中。