在一些多用戶的網站上總會有一些用戶不怎么受歡迎,得想個辦法禁止這些用戶登錄,如果您的多用戶會員制網站還沒有小黑屋功能,那么來看看這一篇wordpress開發(fā)教程吧。
- 方法來源:群網友 - 小秋喲(meifa@188.com)

實現(xiàn)方法:
在主題根目錄下的functions.php
文件的<?php
下添加以下代碼:
//在資料頁面添加選項
function dj_rc_admin_init(){
// 編輯用戶資料
add_action( 'edit_user_profile', 'dj_rc_edit_user_profile' );
add_action( 'edit_user_profile_update', 'dj_rc_edit_user_profile_update' );
}
add_action('admin_init', 'dj_rc_admin_init' );
//在個人資料頁面添加一個復選框
function dj_rc_edit_user_profile() {
if ( !current_user_can( 'edit_users' ) ) {
return;
}
global $user_id;
// 用戶不能禁止自己
$current_user = wp_get_current_user();
$current_user_id = $current_user->ID;
if ( $current_user_id == $user_id ) {
return;
}
?>
<h3>權限設置</h3>
<table class="form-table">
<tr>
<th scope="row">禁止用戶登錄</th>
<td><label for="dj_rc_ban"><input name="dj_rc_ban" type="checkbox" id="dj_rc_ban"
<?php if (dj_rc_is_user_banned( $user_id )){echo 'checked="checked"';} ?> /> 勾起來,盤Ta,什么玩意兒……</label></td>
</tr>
</table>
<?php
}
//添加一個函數(shù)來將這個選項的值保存到數(shù)據庫中
function dj_rc_edit_user_profile_update() {
if ( !current_user_can( 'edit_users' ) ) {
return;
}
global $user_id;
// 用戶不能禁止自己
$current_user = wp_get_current_user();
$current_user_id = $current_user->ID;
if ( $current_user_id == $user_id ) {
return;
}
// 鎖定
if( isset( $_POST['dj_rc_ban'] ) && $_POST['dj_rc_ban'] = 'on' ) {
dj_rc_ban_user( $user_id );
} else { // 解鎖
dj_rc_unban_user( $user_id );
}
}
//禁止用戶
function dj_rc_ban_user( $user_id ) {
$old_status = dj_rc_is_user_banned( $user_id );
// 更新狀態(tài)
if ( !$old_status ) {
update_user_option( $user_id, 'dj_rc_banned', true, false );
}
}
//解禁用戶
function dj_rc_unban_user( $user_id ) {
$old_status = dj_rc_is_user_banned( $user_id );
// 更新狀態(tài)
if ( $old_status ) {
update_user_option( $user_id, 'dj_rc_banned', false, false );
}
}
//判斷用戶是否被禁止
function dj_rc_is_user_banned( $user_id ) {
return get_user_option( 'dj_rc_banned', $user_id, false );
}
//阻止已禁止的用戶登錄
function dj_rc_authenticate_user( $user ) {
if ( is_wp_error( $user ) ) {
return $user;
}
// 如果用戶被禁止,則返回錯誤提示,這里是顯示給登錄用戶看的,錯誤提示可根據自己的喜好修改。
$banned = get_user_option( 'dj_rc_banned', $user->ID, false );
if ( $banned ) {
return new WP_Error( 'dj_rc_banned', __('抱歉,您已被禁止登錄!請聯(lián)系站長解禁。', 'rc') );
}
return $user;
}
//將該函數(shù)掛載到 wp_authenticate_user 鉤子
add_filter( 'wp_authenticate_user', 'dj_rc_authenticate_user', 1 );
保存即可。
如何使用?
在“所有用戶”中找到您需要禁止登錄的用戶,在其“個人資料”底部有相關選項:


注意:
- 您無法禁止管理員登錄
- qq登錄,不兼容cookie
還有一個問題,就是一個賬號同時被多個用戶登錄,目前可以通過這款wordpress插件解決:
B2用戶:
- 代碼來源:詳情
add_filter( 'rest_api_init', function($wp_rest_server){
$array = array(3,9);//關入小黑屋用戶id,英文,隔開
$user_id = get_current_user_id();
if(in_array($user_id,$array)){
$allow_cookie = apply_filters('b2_login_cookie', b2_get_option('normal_login','allow_cookie'));
if((string)$allow_cookie === '1'){
wp_logout();
}
wp_die('您已被關入小黑屋,請聯(lián)系管理員解封');
}
}, 1 );
如果您需要給您的訪客添加自定義頭像功能,那么可以看看這篇wordpress開發(fā)教程: