トラックバックやピンバックを整理するとき、同じIPから5件以上届いたという理由だけでスパムと判断しないでください。共有サーバーなどでは、正当な通知が同じIPから届く場合があります。
以下のコードは確認候補を表示するだけで、コメントを書き換えません。
通知の内容を見て判断する
トラックバックとピンバックは参照通知の仕組みです。通知の送受信はサイトの設定や実装に依存し、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に一致するものを一括で処理する前に、各対象を確認してください。完全削除を急がず、利用環境のゴミ箱・スパムの保持期間と復元方法を確認し、バックアップを確保します。
コードを外せば候補画面はなくなります。このコードはコメントを変更しないため、外す際にコメントを復元する操作は不要です。
新しい通知を止める場合
「設定 → ディスカッション」の新しい投稿に対するピンバック・トラックバックの受付設定を確認します。この変更だけで、既存投稿すべての受付が無効になるとは限りません。既存記事の受付設定も必要に応じて確認してください。送信側の通知設定と受信側の受付設定も別です。



