はじめに
1日数百件...世界のどこかから当ぶろぐへやってくるトラックバックスパムの数です.
以前に導入したプラグイン akismet がそれらを食べてくれるため,一見問題がないように見えますが,強力すぎるのか何なのか,マトモなトラックバック,コメントまで食べてくれてしまいます.
食べられたマトモなトラックバック,コメントはそのままでは表示されないので,手動で 「de-spam」する必要があるわけですが,akismet の 「Latest Spam」 リストからそれらを見つけ出さなければなりません.
これはけっこう,というかかなり骨が折れます.最近はもう,チェックの途中で 「すべて削除」 してしまってます.
検索してみた
そんな悩みにたまりかね,Yahoo! でグg...いや,普通にググってみたところ,次のエントリにたどり着きました.
- hiromasa.zone
) » Akismet de-spam view Hack - power source* » WP: (続)Akismet de-spam view Hack
- [WP] Akismet de-spam View Hack, WP2.2対応版 « Odysseygate.com
なお,はじめの 2つは akismet 1.x 系について,3つ目は 同 2.0 系についてそれぞれ書かれています.私は 2.0 系を入れてますので以下,その方向で進めます.
どうなるの?
akismet の 「Latest Spam」 リストにおいて,日本語 (というかマルチバイト文字) を含むもののみが表示されるようになります.
当然ながら,マトモなトラックバック,コメントであっても,all-english なものも表示されなくなります.
何するの?
まずはかる~く肩慣らしでひろまささんのハック。akismet.phpをエディタで開いて、「$end = $start + 50;」を検索します。この行に続いて、以下のように修正してやればOKです。
if ( $page < 2 ) $page = 1; $start = ( $page - 1 ) * 50; $end = $start + 50; // //$comments = $wpdb->get_results(”SELECT * FROM $wpdb->comments WHERE comment_approved = ’spam’ ORDER BY comment_date DESC LIMIT $start, $end”); //$total = $wpdb->get_var( “SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = ’spam’” ); // //Akismet de-spam View Hack respect for Hiromasa $comments = $wpdb->get_results(”SELECT * FROM $wpdb->comments WHERE comment_approved = ’spam’ AND LENGTH(comment_content) <> CHAR_LENGTH(comment_content) ORDER BY comment_date DESC LIMIT $start, $end”); $total = $wpdb->get_var( “SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = ’spam’ AND LENGTH(comment_content) <> CHAR_LENGTH(comment_content) ” ); //end }
$blogdir/wp-content/plugins/akismet/akismet.php ( $blogdir は適宜置換を) の 2行を書き換えるだけです.
注意
私の場合,先で紹介した 3つ目のエントリ内のソースの該当部分をそのままコピペさせていただいたわけですが,シングルクォーテーション,ダブルクォーテーションがそれぞれ全角になってました.(WordPress の仕様ですかね?)
ので,これらを半角に変換してやらないと怒られます.
