WordPress免插件防Spam骚扰

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 ----------------------------------------
?> 

执行后,增加一栏隐藏栏,如果填了就是Spam,标记为Spam,截断50字长度,送出。使用截断50字功能是为了节省资料库空间。这已经是“小墙”的第二个版本,增加了对Trackbacks/Pingbacks的Spam拦截。要想获得“小墙”最新版,敬请关注Willin大侠的《小牆 - 防Spam就是這麼簡單》

  1.   执行后,增加一栏隐藏栏,如果填了就是Spam,标记为Spam,截断50字长度,送出。使用截断50字功能是为了节省资料库空间。
    这是什么意思?

    • spam是自动填写资料并发送的,spam不会辩认出这行隐藏栏,所以填写了这行隐藏栏的就是spam
      既然判定为spam,那spam内容都是废话,无需多看,所以截断之后送出,节省数据库