コメントを使わないサイトでは、空のコメント欄が残っているだけで雑な印象になります。しかも放置するとスパムの投稿先になります。確実に消す手順を、影響の小さい順に並べました。
1. 今後の投稿を閉じる(設定)
- 「設定」→「ディスカッション」を開く
- 「新しい投稿へのコメントを許可」のチェックを外す
- 保存
これでこれから作る投稿はコメントが閉じた状態になります。すでに公開済みの投稿には効きません——ここが最初のつまずきポイントです。
2. 既存の投稿を一括で閉じる
- 「投稿」→「投稿一覧」を開く
- 上部の表示件数を増やして全選択(チェックボックス)
- 「一括操作」→「編集」→「適用」
- 「コメント」を「許可しない」にして「更新」
固定ページ・カスタム投稿タイプも同じ手順で一括変更できます。件数が多い場合はページを分けて繰り返します。
3. テーマ側で出力を消す
テンプレートのcomments_template()が、コメント欄を出している呼び出しです。
<?php comments_template(); ?> ← この行を消す(またはコメントアウト)自作テーマなら削除でかまいません。配布テーマの場合は子テーマでsingle.phpを上書きします(テーマを更新しても消えたままになります)。
条件付きで出したいときは、こう書くのがきれいです。
<?php if (comments_open() || get_comments_number()) : ?>
<?php comments_template(); ?>
<?php endif; ?>「コメントを受け付けている、または既にコメントがある」ときだけ表示する形です。
4. コメント機能自体を無効化する(コードで)
管理画面からも消して、完全に使わない状態にするならこちらです。
// 投稿タイプからコメント機能を外す
add_action('init', function () {
foreach (get_post_types() as $type) {
if (post_type_supports($type, 'comments')) {
remove_post_type_support($type, 'comments');
remove_post_type_support($type, 'trackbacks');
}
}
});
// 既存のコメントを一律で閉じる
add_filter('comments_open', '__return_false', 20, 2);
add_filter('pings_open', '__return_false', 20, 2);
// 既存コメントを表示しない
add_filter('comments_array', '__return_empty_array', 10, 2);
// 管理画面のメニューからコメントを隠す
add_action('admin_menu', function () {
remove_menu_page('edit-comments.php');
});__return_falseと__return_empty_arrayは、WordPressが用意している「常にfalse/空配列を返す関数」です。自分で関数を書かずにフィルターへ渡せます。
コメントは残したい:スパムだけ止める
コメントを機能として使いたい場合、スパム対策はこの順で効きます。
- 「コメントの手動承認を必須にする」をオン(「設定」→「ディスカッション」)——公開されるものを人が決める
- スパム対策プラグインを有効化する(WordPressに同梱されているものを含む)
- リンクを含むコメントを承認待ちにする(同じ設定画面の「コメントモデレーション」)
- 古い投稿のコメントを自動で閉じる——「〇日以上前の投稿のコメントフォームを自動的に閉じる」
手動承認だけでも、スパムが公開される事故はほぼ防げます。まずここをオンにするのが最短です。
トラックバック・ピンバックも止める
古い仕組みで、いまはほぼスパムの入口としてしか機能していません。
- 「設定」→「ディスカッション」の「他のブログからの通知(ピンバック・トラックバック)を受け付ける」のチェックを外す
- 既存投稿は上の一括編集で「ピン留め」も許可しないに変更
コメント欄が消えないときの確認順
- 投稿ごとの設定——編集画面の「ディスカッション」パネル(見えない場合は「⋮」→「設定」→パネルから表示)
- テーマの呼び出し——
single.phppage.phpcontent-*.phpにcomments_template()が残っていないか - プラグイン——コメント関連プラグインが独自に出していないか
- キャッシュ——キャッシュを消して再確認
まとめ
- 設定→ディスカッションで今後の投稿を閉じ、一括編集で既存の投稿も閉じる
- 表示自体を消すならテンプレートの
comments_template()を外す(配布テーマは子テーマで) - 完全に使わないなら
remove_post_type_support+comments_openのフィルターで無効化 - コメントを使う場合は、手動承認をオンにするのがスパム対策の最短ルート
使わない機能をきれいに閉じておくと、見た目も運用の手間もすっきりします。