web-dev-qa-db-ja.com

カテゴリの投稿をすべて「コメントを許可しない」に変更します

私は、各投稿の設定に一つずつ手を入れずに手作業で修正することなく、特定のカテゴリの投稿をすべて「コメントを許可しない」ように修正する方法を探しています。

おそらくMySQLの文?

ありがとう

3

あなたの投稿画面では、カテゴリでフィルタしてから、コメントをオフにするためにすべてを選択して一括編集することができるはずです。

編集:一括操作はページごとにのみ適用されます(例:20の投稿または表示されている記事は多数あります)。したがって、ページごとに実行する必要があります。結果を表示するか、画面オプションに移動して画面に表示されている項目の数を増やします。

3
helenhousandi

WordPressで直接実行するには、次のようにします。

<?php
    $args = array('category' => *term_id of category to disable comments for*);
    $myposts = get_posts($args);
    foreach($myposts as $post) {
         $my_post = array(
             'ID' => $post->ID,
             'comment_status' => 'closed'
         );
         wp_insert_post($my_post);     
    }        
?>

get_posts()は、$ argsで指定されたカテゴリを持つすべての投稿を取得します。

'category' => $term_id

wp_insert_post()を使用すると、投稿を変更して次の設定でコメントを無効にすることができます。

'comment_status' => 'closed'

get_posts() およびのドキュメントページを表示してください。 wp_insert_post()詳細については。

このカテゴリの今後の投稿でコメントができないようにするには、 save_postフックも使用できます。

save_postインポート、投稿/ページ編集フォーム、xmlrpc、または電子メールによる投稿など、投稿またはページが作成または更新されるたびに実行されます。アクション関数の引数:投稿ID.

<?php
    add_action('save_posts', 'disable_comments');
    function disable_comments($post_id) {
        $disabled_category = /* term_id of the category to disable comments for */
        $category = get_the_category($post_id);
        if($category->cat_ID == $disabled_category) {
           $my_post = array(
             'ID' => $post_id,
             'comment_status' => 'closed'
           );
           wp_insert_post($my_post);     
        }
    }
?>

get_the_category()は選択した投稿のカテゴリオブジェクトを取得します。 のドキュメント にアクセスすると、get_the_category()の詳細がわかります。

アクションフックがわからない場合は、このページにアクセスしてください。

2
Wipqozn