让代码更简单

WordPress代码实现评论白名单功能

重要:本文最后更新于2020-04-21 08:22:36,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

WordPress评论白名单不用审核直接显示应该怎么实现?以前一直用的评论黑名单来限制打广告的人,有黑名单就有白名单。由于wordpress后台只提供了评论黑名单设置项,所以白名单的实现要比黑名单复杂一点,但也难不到哪里去,下面我以DUX主题为例举个例子,以下代码当然也适用于DMD主题。

增加后台设置项

为了方便用户操作,后台设置项很有必要,不然想要允许一名用户自由评论,还得改代码,十分麻烦。

找到DUX或者DMD主题根目录中的options.php文件,这个是后台设置框架的配置文件,在里面合适的位置增加如下代码。

复制
$options[] = array(
'name' => __('评论白名单', 'haoui'),
'id' => 'allowcomment',
'std' => '1016134519@qq.com',
'desc' => __('评论白名单,填写允许评论的邮箱,一行一个(不要留空行)', 'haoui'),
'type' => 'textarea');

注意:是合适位置,这个位置应该很好找。

保存后刷新后台主题设置页面,可以看到多了一项评论白名单。

WordPress代码实现评论白名单不用审核

WordPress代码实现评论白名单不用审核

挂载处理函数

上面仅仅是保存了白名单内容,要修改评论数据,我们需要利用pre_comment_approved过滤器,打开主题目录下的functions.php文件,增加如下代码:

复制
//评论白名单https://www.daimadog.org/6206.html
function dmd_allow_comment_email( $approved , $commentdata ) {
if(_hui('allowcomment')){
$list=explode(PHP_EOL,_hui('allowcomment'));
$isContains = in_array($commentdata['comment_author_email'],$list);
if($isContains){
return 1;
}else{
return $approved;
}
}
}
add_filter( 'pre_comment_approved', 'dmd_allow_comment_email', 99, 2 );

搞定,保存后测试看看吧。

以上代码仅将白名单用户的评论设置为通过状态,其它用户的状态扔延用wordpress后台设置,如果你想让其它所有人都不通过,可以将上面的$approved改为其它值,具体内容如下:

  • 0 (int): 评论状态为”Pending” (待审核)
  • 1 (int) : 评论状态为”Approved” (通过审核)
  • ‘spam’ (string): 评论被标记为”垃圾评论”
  • ‘trash’ (string): 评论被转移至”垃圾箱”

感觉很棒!可以赞赏支持我哟~

0 打赏

评论 (5)

登录后评论
请问下 这个白名单邮箱必须要写绝对的邮箱账号吗?比如是xxxx@126.com 这种形式的?
改代码可以实现,遍历添加的白名单,查找指定的字符串就行。比如查找@126
其实我想要的是批量黑名单,就好比缙哥那个盘他!
黑名单已经发过了,可以搜一下。
狗哥牛批,狗哥万岁……
QQ咨询 邮件咨询 狗哥推荐