新闻中心

WordPress每篇文章如何实现只允许用户评论一次

作者 / 无忧主机 时间 2015-10-08 16:20:46

WordPress貌似和垃圾评论是一对“孪生兄弟”,无论在国内还是国外的php主机上搭建的Wordpress博客,无论Wordpress有多少流量多么低的权重,垃圾评论都会自动找上门来,假如有好几天没有进Wordpress后台查看的话,当你再一次“踏入”时却发现垃圾评箱已经爆满了。WordPress垃圾评论数量多容易掩盖正常的读者评论,批量删除垃圾评论又容易造成误删,WordPress垃圾评论发布机器持续不断地向网站提交评论请求,频率足够高的话则变演变成一种网站攻击,配置差一些的php空间很有可能因此而运行缓慢,严重者造成服务器宕机,无法正常访问。WordPress的垃圾评论的危害是不言而喻的,对付Wordpress垃圾评论不仅要“阻断”垃圾评论的发布,更要提前“阻止”垃圾评论的提交,在无忧主机官方(www.51php.com)WordPress板块有很多预防垃圾评论技术文档,今天小编将给大家分享一下:WordPress每篇文章如何实现只允许用户评论一次。这类访问也能有效的预防垃圾评论。 原理:每次用户发表的评论进数据库之前,从当前文章的所有评论中查找是否有相同的用户名、邮箱、IP进行筛选如,如果有就跳到错误页面。 方法如下: 文本编辑器(editplus)打开:将下列代码插入当前WordPress主题目录下functions.php中即可

function ludou_getIP() {
$ip = $_SERVER['REMOTE_ADDR'];
$ip = preg_replace( '/[^0-9a-fA-F:., ]/', '', $ip );

return $ip;
}

function ludou_only_one_comment( $commentdata ) {
global $wpdb;
$currentUser = wp_get_current_user();

// 不限制管理员发表评论
if(empty($currentUser->roles) || !in_array('administrator', $currentUser->roles)) {
$bool = $wpdb->get_var("SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = ".$commentdata['comment_post_ID']." AND (comment_author = '".$commentdata['comment_author']."' OR comment_author_email = '".$commentdata['comment_author_email']."' OR comment_author_IP = '".ludou_getIP()."') LIMIT 0, 1;");

if($bool)
wp_die('本站每篇文章只允许评论一次。<a href="'.get_permalink($commentdata['comment_post_ID']).'">点此返回</a>');
}

return $commentdata;
}
add_action( 'preprocess_comment' , 'ludou_only_one_comment', 20);
这样就实现了一篇文章单个用户只能评论一次。朋友们不妨试一试。 无忧主机相关文章推荐阅读: WORDPRESS教程:自定义管理面板标题 WORDPRESS如何全自动添加图片ALT属性 WORDPRESS教程:禁止搜索引擎收录特定的文章

本文地址:https://www.51php.com/wordpress/20308.html

1
1
1
1
1
1
1