近年来,WordPress垃圾评论汹涌。
这些评论大多由机器人自动提交或水军人为手动提交,IP地址主要来自美国、德国、乌克兰等十几个国家,也有个别来自台湾的繁体字评论。
内容多是较长的外文内容,带有链接。
WordPress虽然有自带的Akismet插件,但启用后也只是将“待审”的垃圾评论移到了“垃圾”。若启用“自动丢弃显而易见的广告”,又会错过个别混在垃圾评论堆的正常评论。
于是有了本文使用代码来过滤和阻止垃圾评论的方法。
至于这个方法,早在四年前我就写过了同样的文章。
但测试后发现没有效果,于是戛然而止,这四年都采取定期手动清空垃圾评论的方式处理。
本文推荐的代码来自伤逝的安详,经人工测试有效,但具体效果仍待观察。
将以下代码放到当前主题的 functions.php 文件最后一个 ?> 的前面,即可生效。错误提示使用的是error函数,但一般主题都使用wp_die函数。如果使用代码后出错,把代码中所有的err都替换为wp_die即可。
屏蔽所有纯英语、日语、俄语、韩语、阿拉伯语、泰语评论
// 禁止全英日俄韩阿泰语评论
function ssdax_comment_all_post( $incoming_comment ) {
$enpattern = '/[一-龥]/u';
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
$ruattern ='/[А-я]+/u';
$krattern ='/[갂-줎]+|[줐-쥯]+|[쥱-짛]+|[짞-쪧]+|[쪨-쬊]+|[쬋-쭬]+|[쵡-힝]+/u';
$arattern ='/[؟-ض]+|[ط-ل]+|[م-م]+/u';
$thattern ='/[ก-๛]+/u';
if(!preg_match($enpattern, $incoming_comment['comment_content'])) {
err( "写点汉字吧,博主外语很捉急! Please write some chinese words!" );
}
if(preg_match($jpattern, $incoming_comment['comment_content'])){
err( "日文滚粗!Japanese Get out!日本語出て行け!" );
}
if(preg_match($ruattern, $incoming_comment['comment_content'])){
err( "北方野人讲的话我们不欢迎!Russians, get away!Savage выйти из Русского Севера!" );
}
if(preg_match($krattern, $incoming_comment['comment_content'])){
err( "思密达的世界你永远不懂!Please do not use Korean!하시기 바랍니다 한국 / 한국어 사용하지 마십시오!" );
}
if(preg_match($arattern, $incoming_comment['comment_content'])){
err( "禁止使用阿拉伯语!Please do not use Arabic!!من فضلك لا تستخدم اللغة العربية" );
}
if(preg_match($thattern, $incoming_comment['comment_content'])){
err( "人妖你好,人妖再见!Please do not use Thai!กรุณาอย่าใช้ภาษาไทย!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'ssdax_comment_all_post');
屏蔽纯英语评论
// 禁止纯英文评论
function ssdax_comment_post( $incoming_comment ) {
$enpattern = '/[一-龥]/u';
if(!preg_match($enpattern, $incoming_comment['comment_content'])) {
err( "写点汉字吧,博主外语很捉急! Please write some chinese words!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'ssdax_comment_post');
屏蔽纯日语评论
// 禁止日文评论
function ssdax_comment_jp_post( $incoming_comment ) {
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
if(preg_match($jpattern, $incoming_comment['comment_content'])){
err( "日文滚粗!Japanese Get out!日本語出て行け!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'ssdax_comment_jp_post');
屏蔽纯俄语评论
//禁止北方野蛮人留言(俄语)
function ssdax_comment_ru_post( $incoming_comment ) {
$ruattern ='/[А-я]+/u';
if(preg_match($ruattern, $incoming_comment['comment_content'])){
err( "北方野人讲的话我们不欢迎!Russians, get away!Savage выйти из Русского Севера!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'ssdax_comment_ru_post');
屏蔽纯韩语/朝鲜语评论
//禁止朝鲜半岛幸福人民留言(朝鲜语/韩语)
function ssdax_comment_kr_post( $incoming_comment ) {
$krattern ='/[갂-줎]+|[줐-쥯]+|[쥱-짛]+|[짞-쪧]+|[쪨-쬊]+|[쬋-쭬]+|[쵡-힝]+/u';
if(preg_match($krattern, $incoming_comment['comment_content'])){
err( "思密达的世界你永远不懂!Please do not use Korean!하시기 바랍니다 한국 / 한국어 사용하지 마십시오!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'ssdax_comment_kr_post');
屏蔽纯阿拉伯语评论
//禁止阿拉伯语评论(部分)
function ssdax_comment_ar_post( $incoming_comment ) {
$arattern ='/[؟-ض]+|[ط-ل]+|[م-م]+/u';
if(preg_match($arattern, $incoming_comment['comment_content'])){
err( "禁止使用阿拉伯语!Please do not use Arabic!!من فضلك لا تستخدم اللغة العربية" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'ssdax_comment_ar_post');
屏蔽纯泰语评论
//禁止人妖部落留言(泰语)
function ssdax_comment_th_post( $incoming_comment ) {
$thattern ='/[ก-๛]+/u';
if(preg_match($thattern, $incoming_comment['comment_content'])){
err( "人妖你好,人妖再见!Please do not use Thai!กรุณาอย่าใช้ภาษาไทย!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'ssdax_comment_th_post');
文章评论