wordpress函数之:拒绝垃圾评论
在不使用插件的情况下,如何实现反垃圾评论?很简单,用下面的代码可以实现,将下述代码粘贴到你主题所在functions.php中即可。
function spam_comment_post( $incoming_comment ) {
$enpattern = '/[一-龥]/u';
$jpattern = '/[ぁ-ん]+| [ァ-ヴ]+/u';
$http = '/[href="|rel="nofollow"|http:\/\/|<\/a>]/u';
if(!preg_match($enpattern, $incoming_comment['comment_content'])) {
wp_die( "全英语呀,博主外语很捉急!" );
}
if(preg_match($jpattern, $incoming_comment['comment_content'])){
wp_die( "日文滚粗!Japanese Get out!日本語出て行け!" );
}
if(preg_match($http, $incoming_comment['comment_content'])){
wp_die( "万恶的发贴机!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'spam_comment_post');
如果你换经常换主题,又常常忘记加入这段代码,那就将它作为插件使用吧。新建一个php文件,复制下面的代码到php文件中,再将此文件放到插件目录(wp-content/plugins/),再进入后台启用这个插件即可。
/*
Plugin Name: Refuse Spam Comments
Plugin URI: https://www.psay.cn/
Description: Refuse spam comment!
Version: 1.0
Author: psay.cn
Author URI: https://www.psay.cn/
*/
function spam_comment_post( $incoming_comment ) {
$enpattern = '/[一-龥]/u';
$jpattern = '/[ぁ-ん]+| [ァ-ヴ]+/u';
$http = '/[href="|rel="nofollow"|http:\/\/|<\/a>]/u';
if(!preg_match($enpattern, $incoming_comment['comment_content'])) {
wp_die( "全英语呀,博主外语很捉急!" );
}
if(preg_match($jpattern, $incoming_comment['comment_content'])){
wp_die( "日文滚粗!Japanese Get out!日本語出て行け!" );
}
if(preg_match($http, $incoming_comment['comment_content'])){
wp_die( "万恶的发贴机!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'spam_comment_post');
现在改用了一下,对于ajax提交评论的,可以的原来提示的位置继续提示,代码如下:
//纯英文评论拦截
function scp_comment_post( $incoming_comment ) {
if( !preg_match('/[一-龥]/u', $incoming_comment['comment_content']) || preg_match('/[ぁ-ん]+| [ァ-ヴ]+/u', $incoming_comment['comment_content']) )
{
header('HTTP/1.1 301 Moved Permanently');
die('<span style="color:red;">不会说中文的请一边玩去吧!</span>');
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'scp_comment_post');