WordPress 禁止某些用户登录

2017-01-01 06:29 1,301 29 条评论 龙笑天下
Dragon主题购买

祝大家 2017 新年快乐!家庭和和美美,工作顺顺利利~
WordPress 禁止某些用户登录

在某些特殊情况下,比如某些用户损害了网站的利益,你可能就需要禁止他们登录网站。

要实现这样的功能,可以直接下载安装 Disable Users 或者 BAN Users 插件。当然,本文介绍的是纯代码的方法!

首先,在 functions.php 中加入以下代码:

/**
 * WordPress 禁止某些用户登录 - 龙笑天下
 * https://www.ilxtx.com/wp-ban-users.html
 */
//在资料页面添加选项
function lxtx_rc_admin_init(){ 
	// 编辑用户资料
	add_action( 'edit_user_profile', 'lxtx_rc_edit_user_profile' );
	add_action( 'edit_user_profile_update', 'lxtx_rc_edit_user_profile_update' ); 
}
add_action('admin_init', 'lxtx_rc_admin_init' );

//在个人资料页面添加一个复选框
function lxtx_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="lxtx_rc_ban"><input name="lxtx_rc_ban" type="checkbox" id="lxtx_rc_ban" 
		<?php if (lxtx_rc_is_user_banned( $user_id )){echo 'checked="checked"';} ?> /> 请谨慎操作,选中则禁止!</label></td>
	</tr>
	</table>
	<?php
}

//添加一个函数来将这个选项的值保存到数据库中
function lxtx_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['lxtx_rc_ban'] ) && $_POST['lxtx_rc_ban'] = 'on' ) {
		lxtx_rc_ban_user( $user_id );
	} else { // 解锁
		lxtx_rc_unban_user( $user_id );
	} 
}

//禁止用户
function lxtx_rc_ban_user( $user_id ) { 
	$old_status = lxtx_rc_is_user_banned( $user_id ); 
	// 更新状态
	if ( !$old_status ) {
		update_user_option( $user_id, 'lxtx_rc_banned', true, false );
	}
}

//解禁用户
function lxtx_rc_unban_user( $user_id ) { 
	$old_status = lxtx_rc_is_user_banned( $user_id ); 
	// 更新状态
	if ( $old_status ) {
		update_user_option( $user_id, 'lxtx_rc_banned', false, false );
	}
}

//判断用户是否被禁止
function lxtx_rc_is_user_banned( $user_id ) {
	return get_user_option( 'lxtx_rc_banned', $user_id, false );
}

//阻止已禁止的用户登录
function lxtx_rc_authenticate_user( $user ) { 
	if ( is_wp_error( $user ) ) {
		return $user;
	} 
	// 如果用户被禁止,则返回错误提示
	$banned = get_user_option( 'lxtx_rc_banned', $user->ID, false );
	if ( $banned ) {
		return new WP_Error( 'lxtx_rc_banned', __('抱歉,该用户被禁止登录!请联系站长解禁。', 'rc') );
	} 
	return $user;
}
//将该函数挂载到 wp_authenticate_user 钩子
add_filter( 'wp_authenticate_user', 'lxtx_rc_authenticate_user', 1 );

代码改编自《WordPress 禁止某些用户登录

然后,管理员在后台“编辑用户”菜单里看到我们增加的这个选项了(如下图):

wp ban users 后台界面效果图

选中后,则会禁止该用户登录!并且该用户在登录时,会看到这个提示信息:“抱歉,该用户被禁止登录!请联系站长解禁。”

当然,也可以把本文代码制作成一个小插件~ 制作方法如下:

在 wp-content/plugins 目录创建一个名为“wp-ban-users”的文件夹,然后在里面新建一个名为 wp-ban-users.php 的 php 文件,在文件里添加下面的代码:

<?php
/*
Plugin Name: WP Ban Users
Plugin URI: https://www.ilxtx.com/wp-ban-users.html
Description: 禁止某用户登录
Author: 龙笑天下
Version: 1.0
Author URI: https://www.ilxtx.com
*/

然后,再加入上面提到的插入 functions.php 里的代码,一个小插件即制作成功了!

本站Dragon 主题已经自带集成了此功能,然后配合禁言用户功能使用,非常完美。

Dragon 主题:Wordpress 商城会员多功能高级主题 V5.0.0-BG
Dragon 主题:Wordpress 商城会员多功能高级主题 V5.0.0

Dragon 主题:Wordpress 商城会员多功能高级主题 V5.0.0[出售]

WordPress 个人博客 CMS 主题 Dragon,CMS、博客、自适应响应式、用户中心、商城,强大到窒息~
WordPress 禁止某些用户评论-BG
WordPress 禁止某些用户评论

WordPress 禁止某些用户评论

前几天看到老古说知乎账号被禁言,我就想了下,貌似我们带有会员注册的 wordpress 站点都没有禁言方面的功能,而且在某些时候,如果某用户的评论严重违规,我们就需对该用户进行禁言处理了。于是想...

「点点赞赏,手留余香」

还没有人赞赏,快来当第一个赞赏的人吧!

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

2016-12-18

2017-01-15

发表评论

表情 格式 贴图 链接 私密 签到
Dragon主题购买阿里云特价云服务器1核2G低至86元,N4共享型服务器3年仅需799元腾讯云特价云服务器1核2G 88元/年 2核4G3M688元/3年,更有千元代金券礼包免费领!
评论
正在努力加载中...
扫一扫二维码分享
×
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies. Learn more