#精品
阻止WordPress垃圾评论 – 免插件教程

2025-01-12 0 365

互联网每天都产生很多的垃圾信息、不良广告信息,WordPress网站如果开启了评论功能,也难免被这些不良信息困扰。如果是维护管理频率较高的网站,强烈建议在后台开启“评论必须经人工批准”。

不过这样一来会增加管理者的工作,本文将介绍如何有效自动过滤大多数垃圾评论的方法。

垃圾评论的特征

一般来说垃圾评论都是以超级链接或宣传某种不良信息为目的,大多有以下特点:

  • 评论内容含有<a>链接
  • 通过程序自动发送
  • 部分境外垃圾信息不包含中文汉字

垃圾评论示例:

阻止WordPress垃圾评论 – 免插件教程
WordPress垃圾评论示例

如何阻止垃圾评论

1、使用Akismet Anti-Spam插件自动防护。这种做法是可行而且有效的,但缺点就是其免费密钥仅适用于个人非商业站点,而且API调用次数受到限制。最大的弊端是会影响网站性能。

2、使用插件或代码为评论增加验证功能,例如验证码或仅注册用户评论等。这种方式也是有效的,不过不太适合采用了静态缓存或CDN缓存的网站,虽然可以通过ajax的方式来解决缓存的问题,但ajax会产生额外系统资源损耗,访问量大的网站特别明显,不符合813站长大咖一贯追求极致优化的作风。(注:ajax会与服务器交换数据。)

3、推荐阻止垃圾评论的方式:纯代码免插件阻止垃圾评论

在当前主题的functions.php文件尾部增加以下代码:

/* 阻止垃圾评论代码Start */
/* 本文出自:https://www.zhanzhangb.com/1417.html */
/* 阻止全英文评论 */
function refused_english_spam_comments( $comment_data ) {
	$pattern = \'/[一-龥]/u\';
	$jpattern =\'/[ぁ-ん]+|[ァ-ヴ]+/u\';
	if(!preg_match($pattern,$comment_data[\'comment_content\'])) {
		wp_die(\'<p>评论中必须含有中文! - 813站长大咖</p>\');
	}
	return( $comment_data );
}
add_filter(\'preprocess_comment\',\'refused_english_spam_comments\');
/* 阻止含 A 链接评论 */
function refused_a_spam_comments( $incoming_comment ) {
	if(strstr($incoming_comment[\'comment_content\'], \"<a\")){
		wp_die( \"<p>评论中不能包含超级链接,请直接填写 URL 地址! - 813站长大咖</p>\" );
	}
	return( $incoming_comment );
}
add_filter(\'preprocess_comment\', \'refused_a_spam_comments\');
/* 阻止垃圾评论代码End */

如果以上代码阻止垃圾评论,但不出现提示内容(部分主题的兼容性问题),请尝试以下代码:

/* 阻止垃圾评论代码Start */
/* 本文出自:https://www.zhanzhangb.com/1417.html */
function spam_comments_error_prompt($ErrMsg) {
	header(\'HTTP/1.1 405 Method Not Allowed\');
	echo $ErrMsg;
	exit;
}
/* 阻止全英文评论 */
function refused_english_spam_comments( $comment_data ) {
	$pattern = \'/[一-龥]/u\';
	$jpattern =\'/[ぁ-ん]+|[ァ-ヴ]+/u\';
	if(!preg_match($pattern,$comment_data[\'comment_content\'])) {
		spam_comments_error_prompt(\'评论中必须含有中文! - 813站长大咖\');
	}
	return( $comment_data );
}
add_filter(\'preprocess_comment\',\'refused_english_spam_comments\');
/* 阻止含 A 链接评论 */
function refused_a_spam_comments( $incoming_comment ) {
	if(strstr($incoming_comment[\'comment_content\'], \"<a\")){
		spam_comments_error_prompt( \"评论中不能包含超级链接,请直接填写 URL 地址! - 813站长大咖\" );
	}
	return( $incoming_comment );
}
add_filter(\'preprocess_comment\', \'refused_a_spam_comments\');
/* 阻止垃圾评论代码End */

以上代码将阻止内容中包含任何超级链接或内容全英文的评论,并给出适当的提示,这和Akismet Anti-Spam插件不同的是,被阻止的评论是无法发送的(返回405错误提示),这对于WordPress数据库来说也算是一种环保吧。

欢迎持续关注813站长大咖,我们共同探讨更多WordPress优化技巧,联系我们

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在!
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。联系邮箱:3496947425@qq.com

813站长大咖 精品文章 阻止WordPress垃圾评论 – 免插件教程 https://www.813master.cn/1517.html

WordPress极客一枚!无干货,不分享!

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务