WordPressで、特定のカテゴリの記事のみコメントを許可して、該当のカテゴリ以外はコメントを無効化する方法です。
例えば弊社のHPは、お知らせ/プレスリリース/ブログ/受託開発/自社開発/etc…と、記事投稿で色々なカテゴリを使い分けています。
色々なカテゴリの中で、お知らせやプレスリリースのコメントは無効化したいけど、ブログのコメントは許可したかったためそれを実現した方法です。
はじめに
管理画面の設定>ディスカッションの画面で、コメントを許可してください。
Disable Commentsなどのコメントを無効するプラグインを使用している場合は、投稿だけはコメントを許可するかプラグインを無効化してください。
過去の記事について
「はじめに」の設定を行った後に作成する記事は、デフォルトでコメントが許可された状態で作成されます。
但し「はじめに」の設定を行う前の過去記事は、コメントが無効化された状態のママになっているため、記事毎に手動でコメントを許可していく必要があります。
各記事画面の右上の「表示オプション」をクリックして、「ディスカッション」を選択します。
そうすると記事画面内に「ディスカッション」のメタボックスが表示されるため、「コメントの投稿を許可」にチェックをつけて更新します。
これで記事にコメントのフォームが表示されるようになりました。
特定のカテゴリの記事のみコメントを許可する方法
基本的にはfunctions.phpに下記をコピペして頂ければ完了です。
12行目の「blog」は、自分の環境に合わせて適宜ご変更ください。
ブログに属する子カテゴリも全てコメントを許可したかったため、「投稿」で且つ、最上位の親カテゴリが「blog」の場合にコメントを許可してそれ以外はコメントを無効化しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function my_comment_status($open, $post_id) { // 投稿の場合 if (get_post_type() === 'post') { // 最上位の親カテゴリのslug名を取得 $cats = get_the_category($post_id); $cat = $cats[0]; while ($cat->parent) { $cat = get_category($cat->parent); } $cat_slug = $cat->category_nicename; if ($cat_slug === 'blog') { // コメント機能を有効 return $open; } } // コメント機能を無効 return false; } add_filter('comments_open', 'my_comment_status', 10 , 2); |
最後に
特定のカテゴリだけコメントを許可することができました。
全てのカテゴリでコメントを許可しない設定でも良かったのですが、折角のブログなので、ブログのカテゴリだけはコメントできるようになって良かったです。
【動確環境】
WordPress:ver4.9.8
コメントを残す