0

メンテナンス モード機能を作成しましたが、1 つのユーザー名に対してしか機能しません。

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');

しかし、これはうまくいかないようです。

4

1 に答える 1

1

使用する代わりに

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ます。それが役立つことを願っています。

于 2013-04-01T19:10:55.373 に答える