WordPressでコメント機能を無効にしているのにコメントが書き込まれる原因は、ボットが直接 wp-comments-post.php へスパムデータを直接送信(POST送信)しているためです。 [1]
管理画面の設定でコメントをオフにしても、WordPressの標準ファイルである wp-comments-post.php 自体への外部からの直接アクセスを遮断しない限り、自動化されたプログラム(ボット)からの投稿を防げないケースがあります。 [1]
主な原因
- 直接POST送信:画面上のコメント欄が非表示であっても、ボットがプログラムで直接URLにデータを送っている。
- 個別記事の設定漏れ:全体設定はオフにしたが、過去の特定の投稿や固定ページで個別にコメントが有効のままになっている。
- プラグインやテーマの脆弱性:古いプラグインやテーマのセキュリティホールを突かれている。 [2, 3]
具体的な対策方法
- 外部からの直接POSTをブロックする
- セキュリティプラグイン(例: XO Security や reCAPTCHA導入プラグイン)を導入し、コメントスパムや不正な送信を防ぐ。 [4]
- 個別の投稿・固定ページを確認する
- 投稿編集画面の「ディスカッション」メタボックスで「コメントを許可する」のチェックが外れているか確認する(一括で無効化するプラグイン「Disable Comments」等を使うのも有効)。
- WordPress本体・プラグインの更新
- 脆弱性を突いた不正アクセスを防ぐため、常に最新の状態にアップデートする。 [5]
さらに詳しく原因を特定するため、以下を教えていただけますか?
- コメントは特定の記事に集中していますか、それともサイト全体ですか?
- どのような内容のスパム(英語やURL付きなど)が書き込まれていますか?
コメント本文は「supplies professional anti-violence equipments and solutions for the whole world with strong and perfect production capacity. anti-violence.org」となっている
具体的なスパム本文をご提示いただきありがとうございます。
この「supplies professional anti-violence equipments...」という英語のテキストは、海外のbot(自動投稿プログラム)が大量にバラまいている典型的なコメントスパム(広告・被リンク目的のスパム)です。 [1]
WordPressの全体設定(ディスカッション設定)でコメントを無効にしているにもかかわらずこれが届く理由は、脆弱性というよりも、WordPressの仕様の隙を突いた「直接POST(送信)」が行われているためです。 [2]
原因と、このスパムを完全にピタッと止めるための具体的な手順を解説します。
なぜ無効なのに書き込まれるのか?
botはブログの画面(コメント欄)を見て書き込んでいるわけではありません。WordPressがコメントを受け付ける専用のシステムファイル(wp-comments-post.php)のURLに対して、外部から直接コメントデータを送りつけています。 [1, 2, 3]
全体設定をオフにしていても、「過去に作成した古い記事や固定ページ」の個別設定が「コメント許可」のまま残っていると、この直接送信が成功してしまいます。 [4]
スパムを完全に止める3つの対策
以下のステップ順に対策を行うことで、このスパムを確実に遮断できます。
1. 過去の全記事のコメント設定を強制無効化する(最優先)
設定を変更する前に書かれた古い記事のコメント欄が「受付中」のまま生き残っている可能性が非常に高いです。
- WordPress管理画面の 「投稿」>「投稿一覧」 を開きます。
- タイトル左上のチェックボックスを入れて、すべての記事を選択します(ページをまたぐ場合は、右上の「表示オプション」から一時的に表示件数を999件などに増やすと一括処理できます)。
- 「一括操作」のプルダウンから 「編集」 を選び、「適用」 をクリックします。
- 現れた設定画面の「コメント」項目を 「許可しない」 に変更し、右下の 「更新」 をクリックします。
- 「固定ページ」>「固定ページ一覧」 でも同様の操作を行います。
2. プラグインでコメント機能を完全に「根こそぎ」シャットアウトする
WordPressの標準設定だけでは防ぎきれない内部の受付ルート(REST APIやXML-RPC経由など)も全て一括で塞いでくれる無料プラグイン 「Disable Comments」 の導入が最も手軽で効果的です。
- 「プラグイン」>「新規追加」 で「Disable Comments」を検索してインストール・有効化します。
- 設定画面で 「Everywhere(すべての場所)」 を選択して保存します。
- これにより、WordPress内のすべてのコメント受付口がシステムレベルで完全に閉鎖されます。
3. サーバー側(.htaccess)で直接POSTをブロックする
もし上記を行っても万が一すり抜けてくる場合や、システムファイル(wp-comments-post.php)への無駄なアクセス自体を遮断してサーバーの負荷を減らしたい場合は、.htaccess ファイルに以下のコードを追記します。 [2, 5]
# wp-comments-post.php への直接アクセスを禁止
<Files wp-comments-post.php>
Order Allow,Deny
Deny from all
</Files>
※このコードを書き込むと、サイト全体のコメント機能がシステムレベルで一切動かなくなります(コメントを完全に拒否するサイトであればこれが最も強力な防御になります)。 [6]
まずは 「1. 過去記事の一括無効化」 と 「2. Disable Commentsプラグインの導入」 をお試しください。これでほぼ100%書き込みは止まります。
もしこれらを設定した後に、まだスパムが届く、あるいは管理画面に見慣れないユーザーが勝手に追加されているといった兆候はありますか?進捗やサイトの状況を教えていただければ、さらに詳しくサポートいたします。

