web-dev-qa-db-fra.com

modifier tous les articles d'une catégorie en "pas de commentaires autorisés"

Je cherche un moyen de modifier tous les articles d’une catégorie donnée de manière à ce qu’ils ne soient pas commentés, sans entrer dans les paramètres de chaque article, un par un, ni les modifier manuellement.

Peut-être une déclaration MySQL?

Merci

3
themerlinproject

Sur l'écran de vos publications, vous devriez pouvoir filtrer par catégorie, puis sélectionner tout et modifier en bloc pour désactiver les commentaires.

Modifier: Les actions groupées s'appliquent uniquement à la page (par exemple, 20 publications ou le nombre de publications que vous avez affichées). Vous devrez donc le faire pour chaque page. des résultats ou aller jusqu'aux options d'écran et augmenter le nombre d'éléments affichés à l'écran.

3
helenhousandi

Pour le faire directement dans WordPress, vous pouvez utiliser les éléments suivants:

<?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 () récupérera tous les articles de la catégorie spécifiée dans $ args par:

'category' => $term_id

wp_insert_post () vous permettra de modifier ces publications pour désactiver les commentaires avec le paramètre suivant:

'comment_status' => 'closed'

Vous pouvez consulter les pages de documentation pour get_posts () et wp_insert_post () pour plus d'informations.

Pour vous assurer qu'aucune publication future dans cette catégorie n'autorise les commentaires, vous pouvez également utiliser le crochet save_post :

save_post S'exécute chaque fois qu'un article ou une page est créé ou mis à jour, qu'il s'agisse d'un document d'importation, de formulaire d'édition/de modification de page, xmlrpc ou d'un courrier électronique. Arguments de la fonction d'action: post 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 () récupérera l'objet category pour la publication sélectionnée. Visiter la documentation est une bonne idée pour plus d’informations sur get_the_category () .

Si vous ne savez pas ce qu’est un hook d’action, vous devriez visiter cette page .

2
Wipqozn