WordPress 博客代码实现Akismet小墙效果

WordPress教程 5740

WordPress 博主使用的防spam插件应该一般都是Akismet插件,该插件是WP默认附带的,官方推荐,说明效果应该很好,博客吧目前使用的也是Akismet插件。喜欢代码流的WordPress博主对插件通常能不用则不用,很久前博客吧发现一篇关于代码替代Akismet插件防spam的,现在转载过来分享下。

代码介绍:

据说该代码是一位willin写的,博客吧前面也转载有该作者的两篇文章,非代码实现AJAX评论效果和非插件实现评论邮件通知功能。

该代码适用的版本不详,不过应该没有版本限制。

代码使用方法:

  1. 登陆博客后台,点击“外观”选项卡下的“编辑”选项进入主题编辑界面
  2. 选择functions.php文件进行编辑,在<?php和?>之间添加以下代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    /* -----------------------------------------------
    <<小牆>> Anti-Spam v1.8 by Willin Kan.
    */
    //建立
    class anti_spam {
    function anti_spam() {
    if ( !current_user_can('level_0') ) {
    add_action('template_redirect', array($this, 'w_tb'), 1);
    add_action('init', array($this, 'gate'), 1);
    add_action('preprocess_comment', array($this, 'sink'), 1);
    } }
    //設欄位
    function w_tb() {
    if ( is_singular() ) {
    ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=([\"\'])comment([\"\'])(.+)/textarea>#",
    "textarea$1name=$2w$3$4/textarea><textarea name=\"comment\" cols=\"100%\" rows=\"4\" style=\"display:none\"></textarea>",$input);') );
    } }
    //檢查
    function gate() {
    ( !empty($_POST['w']) && empty($_POST['comment']) ) ?
    $_POST['comment'] = $_POST['w'] : $_POST['spam_confirmed'] = 1;
    }
    //處理
    function sink( $comment ) {
    if ( !empty($_POST['spam_confirmed']) ) {
    //方法一:直接擋掉, 將 die(); 前面兩斜線刪除即可.
    //die();
    //方法二:標記為spam, 留在資料庫檢查是否誤判.
    add_filter('pre_comment_approved', create_function('','return "spam";'));
    $is_ping = in_array( $comment['comment_type'], array('pingback', 'trackback') );
    $comment['comment_content'] = ( $is_ping ) ?
    "◎ 這是 Pingback/Trackback, 小牆懷疑這可能是 Spam!\n" . $comment['comment_content'] :
    "[ 小牆判斷這是Spam! ]\n" . $comment['comment_content'];
    }
    return $comment;
    } }
    $anti_spam = new anti_spam();
    // -- END ----------------------------------------
  3. 保存更新文件即可。

提示:willin的该篇文章的地址博客吧不知道,所以就添加转来的博客的地址,知道的可以留言通知一下。代码来自:
http://blog.haitianhome.com/akismet-xiaoqiang.html

提醒:该代码(方法)博客吧并没有实践,所以不清楚其效果如何。代码流的朋友可以研究一翻。

精品推荐: