纯代码禁止WordPress某些用户评论

使用 wordpress 已经好几年了,但是我们发现带有会员注册的 wordpress 站点居然都没有禁言功能,如果我们网站在某些时候,个别会员用户的评论严重违反站点规定,那么我们就需对该会员用户进行禁言处理了以示惩罚。于是想折腾折腾看看有什么办法,于是上网搜索相关教程但是基本都是关于 WordPress 文章禁止评论的… 所以只能自己动手测试操作了,具体代码如下:

  1. /**
  2.  * WordPress 禁止某些用户评论
  3.  */
  4. //在资料页面添加选项
  5. function lxtx_usercmt_admin_init(){
  6. 	// 编辑用户资料
  7. 	add_action( 'edit_user_profile', 'lxtx_usercmt_edit_user_profile' );
  8. 	add_action( 'edit_user_profile_update', 'lxtx_usercmt_user_profile_update' );
  9. }
  10. add_action('admin_init', 'lxtx_usercmt_admin_init' );
  11. //在个人资料页面添加一个复选框
  12. function lxtx_usercmt_edit_user_profile() {
  13. 	if ( !current_user_can( 'edit_users' ) ) {
  14. 		return;
  15. 	}
  16. 	global $user_id;
  17. 	// 用户不能禁止自己
  18. 	$current_user = wp_get_current_user();
  19. 	$current_user_id = $current_user->ID;
  20. 	if ( $current_user_id == $user_id ) {
  21. 		return;
  22. 	}
  23. 	?>
  24. 	<!-- <h3>权限设置</h3> -->
  25. 	<table class="form-table">
  26. 	<tr>
  27. 		<th scope="row">禁止用户评论</th>
  28. 		<td><label for="lxtx_usercmt_ban"><input name="lxtx_usercmt_ban" type="checkbox" id="lxtx_usercmt_ban"
  29. 		<?php if (lxtx_usercmt_is_user_banned( $user_id )){echo 'checked="checked"';} ?> /> 请谨慎操作,选中则禁止!</label></td>
  30. 	</tr>
  31. 	</table>
  32. 	<?php
  33. }
  34. //添加一个函数来将这个选项的值保存到数据库中
  35. function lxtx_usercmt_user_profile_update() {
  36. 	if ( !current_user_can( 'edit_users' ) ) {
  37. 		return;
  38. 	}
  39. 	global $user_id;
  40. 	// 用户不能禁止自己
  41. 	$current_user    = wp_get_current_user();
  42. 	$current_user_id = $current_user->ID;
  43. 	if ( $current_user_id == $user_id ) {
  44. 		return;
  45. 	}
  46. 	// 锁定
  47. 	if( isset( $_POST['lxtx_usercmt_ban'] ) && $_POST['lxtx_usercmt_ban'] = 'on' ) {
  48. 		lxtx_usercmt_ban_user( $user_id );
  49. 	} else { // 解锁
  50. 		lxtx_usercmt_unban_user( $user_id );
  51. 	}
  52. }
  53. //禁止用户
  54. function lxtx_usercmt_ban_user( $user_id ) {
  55. 	$old_status = lxtx_usercmt_is_user_banned( $user_id );
  56. 	// 更新状态
  57. 	if ( !$old_status ) {
  58. 		update_user_option( $user_id, 'lxtx_usercmt_banned', true, false );
  59. 	}
  60. }
  61. //解禁用户
  62. function lxtx_usercmt_unban_user( $user_id ) {
  63. 	$old_status = lxtx_usercmt_is_user_banned( $user_id );
  64. 	// 更新状态
  65. 	if ( $old_status ) {
  66. 		update_user_option( $user_id, 'lxtx_usercmt_banned', false, false );
  67. 	}
  68. }
  69. //判断用户是否被禁止
  70. function lxtx_usercmt_is_user_banned( $user_id ) {
  71. 	return get_user_option( 'lxtx_usercmt_banned', $user_id, false );
  72. }

把上面代码加入 functions.php 后,后台“编辑用户”时,您就会发现多了一个“禁止用户评论”的选项如下:
纯代码禁止WordPress某些用户评论-云模板我们发现上面只是实现了禁言的方法,下面就来把禁言的功能真正使用起来(登录回复可见短代码一直没用过,这次就来用上试试效果~ )。

  1. //阻止已禁止的用户评论
  2. function lxtx_usercmt_authenticate_user( $commentdata ) {
  3.     if( lxtx_usercmt_is_user_banned( $commentdata['user_ID'] ) ){
  4.         err(__('由于严重违反龙笑天下相关规定,该账号已被禁言'));
  5.     }else{
  6.         return $commentdata;
  7.     }
  8. }
  9. if( is_user_logged_in() ){
  10.     add_filter( 'preprocess_comment' , 'lxtx_usercmt_authenticate_user' );
  11. }

具体的禁言效果如下图:
纯代码禁止WordPress某些用户评论-云模板是不是简单实用,如果感觉不错您就来照葫芦画瓢做一个吧!

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/97216

WordPress安全防护插件
服务项目 服务内容 收费标准(元)
开发定制 WordPress主题/插件开发定制 (以最终需求为准)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

电子邮件地址不会被公开。 必填项已用*标注

51建站客服微信二维码
点击这里购买