WordPressのコメント機能を完全削除する方法|PHP編集と設定無効化の2ステップ

概要

WordPressのコメント機能を完全削除する方法について解説していきます。

というのも設定からコメントを無効化してもフォーム表示が残ったり、悪意あるコメント送信が裏で行われたりするケースってあるんですよね(- -;

管理画面のディスカッション設定でチェックを外しただけだと、テーマ側にコメントフォームを描画するコードが残っていて、見た目はそのまま残ってしまうことがあります。
さらにフォームが残っていると、スパムボットが直接コメントを送りつけてくる経路も生きたままになりがちです。

中途半端だとセキュリティリスクにもなるので、消すならスッキリ全部消したいところですね。

ここではcomments_template()のPHPコメントアウトとディスカッション設定の無効化、この2ステップで「フォームの表示」と「コメントの受け付け」を両方止める手順を紹介していきます。

これでコメント送信もフォーム表示も全部消せます。
それではやっていきましょう!

目次

なぜ2ステップ必要なのか

最初に、なぜ1ステップではダメなのかを整理しておきます。

WordPressのコメントには「表示する側(テーマのテンプレート)」と「受け付ける側(WordPress本体の設定)」の2つの層があるんですよね。

  • 表示する側(テンプレート)
    • comments_template() などのテーマ関数が呼ばれている限り、フォームやコメント一覧がページに描画され続ける
  • 受け付ける側(本体設定)
    • ディスカッション設定が有効なままだと、フォームが見えなくてもPOST経由でコメントを送信される余地が残る

つまり、テンプレートだけ消しても受け付け口が開いていればスパムは入ってきますし、設定だけ無効化してもテンプレート次第ではフォームが表示され続けることがあります。
だから「テンプレートの削除」と「設定の無効化」をセットでやるのが確実というわけですね。

手順

ソースコードからコメント機能を削除

ワードプレスのソースコードから下記のコードを完全に削除します。

これを削除することでコメントのフォームを完全に削除することができます。

vscodeのワークスペース内検索などを利用して洗い出し削除しましょう!
コメントアウトはPHPなので「//」ですね。

site\themes\light\layout\_partial\head.ejs

1
2
3
4
5
comments_template();

↓ 修正後

//comments_template();
コメントアウト(先頭に // を付ける)でも表示は止まりますが、完全に不要なら行ごと削除してしまっても構いません。
あとから戻す可能性があるなら、コメントアウトで残しておくほうが復旧は楽ですね(^^

comments_template() はテーマの single.phppage.phpcomments.php などから呼ばれていることが多いです。
1か所だけとは限らないので、ワークスペース全体を検索して呼び出し箇所を洗い出しておくと取りこぼしを防げます。

ワードプレスの設定を変更

ワードプレスからコメントの設定を削除します。

この設定をやらない場合、方法によってはコメントが送信できる可能性があります。
必ず設定を無効化しておきましょう!

設定内容

1
2
3
4
5
>>設定場所
管理画面 → 設定 → ディスカッション

>>設定内容
「新しい投稿へのコメントを許可」のチェックを外す
ワードプレス コメント機能を廃止する設定
ワードプレス コメント機能を廃止する設定
チェックを "外す" です。
間違えないように気を付けましょう(^^;

この設定は「これ以降に作成する新しい投稿」のデフォルトを変える項目です。
そのため、すでに公開済みの投稿には反映されないことがあるんですよね。

既存の投稿にも一括で適用したいとき

新しい投稿だけでなく、過去に公開した記事のコメントもまとめて閉じたい場合があります。
そんなときは管理画面の投稿一覧から一括編集が使えます。

  • 投稿一覧で対象をまとめて選択
    • 管理画面 → 投稿 → すべての投稿でチェックを入れる
  • 「一括操作」→「編集」を適用
    • 表示されるパネルで「コメント」を「許可しない」に変更して更新する

固定ページのコメントを閉じたい場合も、固定ページ一覧で同じように一括編集できます。
すでにテンプレート側で comments_template() を消していればフォームは出ませんが、受け付け状態も「許可しない」に揃えておくと状態が一貫してわかりやすいです。

ピンバック・トラックバックも止めておく

コメント本体とは別に、ピンバック・トラックバックという仕組みも残っていることがあります。
これは他サイトからリンクされたときに自動で通知が届く機能で、スパムの温床になりやすいんですよね。

ディスカッション設定の「他のブログからの通知(ピンバック・トラックバック)を受け付ける」のチェックも外しておくと、コメント周りの受け口をまとめて閉じられます。
コメントを完全に廃止する方針なら、ここも一緒に無効化しておくのがお勧めです。

うまく消えないときの確認ポイント

手順どおりやってもフォームが残る、という場合は次のあたりを順に確認すると切り分けやすいです。

  • キャッシュが残っている
    • キャッシュ系プラグインやブラウザキャッシュをクリアして再読み込みしてみる
  • 別のテンプレートから呼ばれている
    • single.php 以外(page.php やカスタムテンプレート)にも comments_template() が無いか検索する
  • テーマが複数の場所にフォームを出している
    • テーマ独自の関数でコメントフォームを描画している場合があるので、comment_form での検索も併用する

それでも残る場合はテーマ固有の実装が絡んでいる可能性が高いので、利用中テーマの該当テンプレートを直接確認するのが近道ですね。

締め

いかがでしょうか?
これでコメント機能を完全に廃止できたはずです。

ポイントは「テンプレート側の表示」と「本体側の受け付け」を両方止めること、この2層を意識しておけば中途半端な状態にはなりません。

コメントは自分のコンテンツの感想を聞けてSEO的にも優秀なので基本的には有益ですが、
悪用されるリスクもあるので、よく検討して導入しましょう!

自分のブログではこういった感じでエンジニアの知識を赤裸々に公開しています。
業務レベルの知識も取り扱ってるので他の記事もよければ見ていってください!

以上となります。
wordpressをHTMLジェネレータとして利用する方法ってないのかな?
それではお疲れさまでした!