Willin大侠对Wordpress防Spam很有一套,之前写过《WP最簡單的防佬外Spam方式》、《WP免插件防國外Spam方式》、《防Spam又有新招》、《使用Wordpress內置評論審核》等文章介绍如何防止Spam的骚扰,都很实用。这里我要转载的是Willin的《小牆 - 防Spam就是這麼簡單》最新版。我现在用的就是Willin的“小墙”,至今已经拦截N条Spam,无一误杀。所以特地拿来和大家分享一下:
将以下代码复制到function.php中就可以了。
<?php
/* -----------------------------------------------
<<小牆>> Anti-Spam v1.6a by Willin Kan.
*/
//建立黑匣子
class anti_spam {
function anti_spam() {
add_action( 'comment_form', array( &$this, 'w_tb' ) );
add_filter( 'preprocess_comment', array( &$this, 'gate' ) ); }
//設欄位
function w_tb() { echo '<textarea name="comments" cols="100%" rows="8" style="display: none;"></textarea>'; }
//檢查
function gate( $commentdata ) {
$is_ping = in_array($commentdata['comment_type'], array('pingback', 'trackback'));
if ( $is_ping ) {
add_filter('pre_comment_approved',create_function('','return "spam";'));
$commentdata['comment_content'] = "[ 小牆懷疑這可能是 Spam! ]\n" . $commentdata['comment_content'] ;
}
if ( $_POST['comments'] != '' ) {
add_filter('pre_comment_approved',create_function('','return "spam";'));
$commentdata['comment_content'] = "[ 小牆判斷這是 Spam! ]\n" . substr($commentdata['comment_content'],0,50) . "...." ;
}
return $commentdata;
} }
$anti_spam = new anti_spam();
// -- END ----------------------------------------
?>
/* -----------------------------------------------
<<小牆>> Anti-Spam v1.6a by Willin Kan.
*/
//建立黑匣子
class anti_spam {
function anti_spam() {
add_action( 'comment_form', array( &$this, 'w_tb' ) );
add_filter( 'preprocess_comment', array( &$this, 'gate' ) ); }
//設欄位
function w_tb() { echo '<textarea name="comments" cols="100%" rows="8" style="display: none;"></textarea>'; }
//檢查
function gate( $commentdata ) {
$is_ping = in_array($commentdata['comment_type'], array('pingback', 'trackback'));
if ( $is_ping ) {
add_filter('pre_comment_approved',create_function('','return "spam";'));
$commentdata['comment_content'] = "[ 小牆懷疑這可能是 Spam! ]\n" . $commentdata['comment_content'] ;
}
if ( $_POST['comments'] != '' ) {
add_filter('pre_comment_approved',create_function('','return "spam";'));
$commentdata['comment_content'] = "[ 小牆判斷這是 Spam! ]\n" . substr($commentdata['comment_content'],0,50) . "...." ;
}
return $commentdata;
} }
$anti_spam = new anti_spam();
// -- END ----------------------------------------
?>
执行后,增加一栏隐藏栏,如果填了就是Spam,标记为Spam,截断50字长度,送出。使用截断50字功能是为了节省资料库空间。这已经是“小墙”的第二个版本,增加了对Trackbacks/Pingbacks的Spam拦截。要想获得“小墙”最新版,敬请关注Willin大侠的《小牆 - 防Spam就是這麼簡單》。
-
Spam无时无处不在!2009年05月10日 -
Wordpress 免插件实现评论分页导航2010年01月13日 -
Wordpress 评论链接重定向跳转2009年10月11日 -
给主题做了个大手术2009年10月9日