Amazonで商品を見る セール会場へ

WordPress│スパムトラックバックを一括削除する方法

トラックバックやピンバックを整理するとき、同じIPから5件以上届いたという理由だけでスパムと判断しないでください。共有サーバーなどでは、正当な通知が同じIPから届く場合があります。

以下のコードは確認候補を表示するだけで、コメントを書き換えません。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

通知の内容を見て判断する

トラックバックとピンバックは参照通知の仕組みです。通知の送受信はサイトの設定や実装に依存し、WordPress同士でも必ず通知されるわけではありません。件数だけでなく、対象記事との関連性や実際の引用を確認します。

リンクのSEO評価やnofollowの有無を、通知の種類だけで一律に断定することもできません。検索順位を目的に通知を残したり、正当な参照を機械的に削除したりせず、掲載する意味があるかを判断してください。

読み取り専用で確認候補を表示するコード

子テーマのfunctions.phpのPHP内、または管理できるPHPスニペットへ追加します。ファイルへのPHP開始タグの重複に注意し、検証環境で試します。

function waza_trackback_ip_candidates( $threshold = 5 ) {
    global $wpdb;
    $threshold = max( 1, min( 1000, absint( $threshold ) ) );
    return $wpdb->get_results( $wpdb->prepare(
        "SELECT comment_author_IP AS ip, COUNT(*) AS total
         FROM {$wpdb->comments}
         WHERE comment_type IN ('trackback', 'pingback')
           AND comment_approved IN ('0', '1')
           AND comment_author_IP <> ''
         GROUP BY comment_author_IP
         HAVING COUNT(*) >= %d
         ORDER BY total DESC, ip ASC
         LIMIT 100", $threshold
    ) );
}
function waza_trackback_review_page() {
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( 'この画面を表示する権限がありません。' );
    }
    $rows = waza_trackback_ip_candidates( 5 );
    echo '<div class="wrap"><h1>トラックバックの確認候補</h1>';
    echo '<p>未承認・承認済みの通知をIP別に集計します。最大100件のIPを表示します。スパム判定や削除は行いません。</p>';
    if ( ! $rows ) {
        echo '<p>該当する候補はありません。データベースエラーの有無はサーバーログも確認してください。</p></div>';
        return;
    }
    echo '<table class="widefat"><thead><tr><th scope="col">IP</th><th scope="col">通知数</th></tr></thead><tbody>';
    foreach ( $rows as $row ) {
        printf( '<tr><td>%s</td><td>%s</td></tr>', esc_html( $row->ip ), esc_html( $row->total ) );
    }
    echo '</tbody></table><p>管理画面のコメント一覧で本文・送信元・対象記事を確認し、個別に判断してください。</p></div>';
}
add_action( 'admin_menu', function () {
    add_management_page( 'トラックバックの確認候補', 'トラックバックの確認候補', 'manage_options', 'waza-trackback-review', 'waza_trackback_review_page' );
} );

管理画面の「ツール → トラックバックの確認候補」に、5件以上の未承認・承認済み通知があるIPを最大100件表示します。一般コメント、既にスパム・ゴミ箱に分類された通知、空のIPは集計対象外です。同じIPであることは同じ人物の証拠ではありません。

5という数は確認対象を絞る目安です。変更する場合は、画面関数内のwaza_trackback_ip_candidates( 5 )を変更します。件数が少ないスパムをすべて発見する機能ではなく、通知数が非常に多いサイトでは集計負荷も検証してください。

確認後は標準のコメント管理で整理する

WordPressのコメント一覧で送信元・本文・対象記事を確認し、必要な通知を残します。候補IPに一致するものを一括で処理する前に、各対象を確認してください。完全削除を急がず、利用環境のゴミ箱・スパムの保持期間と復元方法を確認し、バックアップを確保します。

コードを外せば候補画面はなくなります。このコードはコメントを変更しないため、外す際にコメントを復元する操作は不要です。

新しい通知を止める場合

「設定 → ディスカッション」の新しい投稿に対するピンバック・トラックバックの受付設定を確認します。この変更だけで、既存投稿すべての受付が無効になるとは限りません。既存記事の受付設定も必要に応じて確認してください。送信側の通知設定と受信側の受付設定も別です。

  • URLをコピーしました!

制作・運用のご依頼はこちら

MOTOKI合同会社のサービス

WordPressの制作・カスタマイズ・高速化・SEO対策・保守まで、Webサイトに関する業務を一括で承ります。料金はサービスごとに公開しています。

WAZAの有料記事のサブスクリプションも開始しました。

目次