コメントを完全に受け付けないのではなく、新しい記事ではコメントを受け付けるけど古い記事ではコメント欄を非表示にしたい、ということもあるかと思います。
古い記事のコメント欄を非表示にする方法について、設定で制御する方法とfunctions.phpで制御する方法の2通りを紹介したいと思います。
コメントの許可を確認する
まずは、コメントを受け付けるようになっているか確認します。コメントの設定をするには、管理画面から[設定] – [ディスカッション]にアクセスします。
投稿のデフォルト設定で、「新しい投稿へのコメントを許可する」にチェックが入っていることを確認してください。ここにチェックが入っていないと、新たに追加した記事にコメント欄が出てきません。
ディスカッション設定で制御する
古い記事のコメント欄を設定で制御するには、ディスカッション設定で「〇日以上前の投稿のコメントフォームを自動的に閉じる」にチェックを入れ、日にちを入力します。デフォルトでは、14日になっているかと思います。
[変更を保存]をクリックして、設定を保存します。
これで、設定した日にちを過ぎた記事のコメント欄は自動的に閉じられ、コメントを投稿することができなくなります。
コメント欄があった場所には、「Comments are closed at the moment.」のようなメッセージが表示されていると思います。
functions.phpで制御する
ディスカッション設定ではなく、functions.phpで制御することもできます。
ディスカッション設定では日にちの指定しかできませんが、functions.phpで制御する場合は秒数で指定するので、より細かい設定が可能になります。
function close_comments( $posts ) { if ( !is_single() ) { return $posts; } if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( 60 * 60 * 24 * 30 ) ) { $posts[0]->comment_status = 'closed'; $posts[0]->ping_status = 'closed'; } return $posts; } add_filter( 'the_posts', 'close_comments' );
上記のようにfunctions.phpに追加すれば、30日以上前の記事ではコメント欄が閉じられます。
3行目の「60 * 60 * 24 * 30」の部分が期間で、秒数で指定します。なので、この部分を適宜変更してください。
あとがき
ディスカッション設定でも制御できますが、もっと細かく指定したい場合にはfunctions.phpで制御しましょう。
古い記事ではコメントを受け付けたくない、という場合はぜひお試しください。