WordPressのスパムコメントがたまったとき — SSHで確認し、少しずつ削除する

2026-02-15

一日に数件ならコメントの確認はむずかしくない。ところが、数日離れているあいだに何千件もたまると、管理画面を開くだけでも重くなることがある。

最初に思いつくのは、管理画面で一ページずつ選んで処理する方法だ。件数が多いと、一覧を読み込むだけでも時間がかかる。

自分で管理するサーバーなら、SSHで件数を調べ、確認済みのスパムだけを分けて削除できる。 公式資料


1. データベースをバックアップする

作業の前にデータベース全体をバックアップする。ファイルが作られたことに加え、復元に使える状態かも確認しておく。

mysqldump -u root -p bitnami_wordpress wp_comments wp_commentmeta > comments_backup.sql

コマンドを実行するとデータベースのパスワードを求められる。ダンプの完了を確かめ、ファイルは公開ディレクトリの外で保管する。


2. 対象のデータベースに接続する

WordPressが使っているデータベースを開く。確認に必要な権限を持つアカウントを選び、対象のサイトを取り違えないようにする。

mysql -u root -p bitnami_wordpress

MariaDBに接続すると、たとえば次のようなプロンプトが出る。

MariaDB [bitnami_wordpress]>

ここから入力するのはSQLだ。最初は読み取りだけを行う。


3. テーブルの接頭辞を確かめる

WordPressでは wp_ がよく使われる。構成によって別の接頭辞になっていることもある。

SHOW TABLES;

対象サイトの設定を見て接頭辞を調べ、実際のテーブル名と照らし合わせる。


4. 未承認とスパムを別々に数える

承認待ちのコメント数と、スパムに分類済みのコメント数を別々に記録する。

未承認コメント

SELECT COUNT(*) FROM wp_comments WHERE comment_approved = '0';

スパムに分類されたコメント

SELECT COUNT(*) FROM wp_comments WHERE comment_approved = 'spam';

件数を見ると、どれだけ確認作業が残っているか分かる。サイトの遅さとの関係を調べるなら、スロークエリログなども確認する。


5. 確認したスパムを小分けに削除する

まずスパムの中身を一部確認する。コピーした環境か、作業時間を確保できる時間帯に、少数ずつ進める。

SQLの画面から出て、シェルでWordPressのディレクトリを開く。WP-CLIでスパムに分類済みのコメントを一覧にする。

wp comment list --status=spam --number=100 --format=ids

内容を確認したIDだけを指定して削除する。例のコマンドは完全削除なので、数値を実際に確認したIDへ置き換えてから実行する。

wp comment delete 123 456 --force

WP-CLIは処理したIDを表示する。

Success: Deleted comment 123.
Success: Deleted comment 456.

削除数は指定したIDの数によって変わる。次のまとまりに進む前に、件数とサイトの表示を確かめる。


6. 過去にSQLで削除した場合、メタデータを調べる

コメントテーブルをSQLで直接削除すると、対応するコメントがなくなったメタデータが残ることがある。まず件数を確認する。

SELECT COUNT(*) FROM wp_commentmeta AS m
LEFT JOIN wp_comments AS c ON c.comment_ID = m.comment_id
WHERE c.comment_ID IS NULL;

想定外の件数なら、削除する前にコピー環境で該当行を調べる。通常のWordPressやWP-CLIの削除処理を使えば、関連するデータも処理される。


7. テーブルの最適化が必要か判断する

行を削除しても、データベースが内部でその領域を再利用することがある。ディスク上のファイルがすぐ小さくなるとは限らない。

最適化が必要なら、空き容量、ストレージエンジンと、テーブルがロックされる時間の影響を調べてから実施する。


8. データベースの画面を終了する

exit

作業後に確かめること

管理画面が重くて扱いにくいほどたまったコメントも、件数を分けて調べ、少しずつ処理できる。承認待ちのコメントは、必要なものが混じる前提で扱う。

作業後は、管理画面とデータベースの状態を先に記録した数値と比べる。

記事を検索