我已经创建了一个维护模式功能,但我只能使用一个用户名。
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');
但这似乎没有成功。
答案 0 :(得分: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
中。希望有所帮助。