web-dev-qa-db-fra.com

Désactiver les commentaires de l'affichage public pour le type de publication personnalisé

J'ai un CPT qui supporte les commentaires. Ce CPT est destiné à un usage interne uniquement. Cependant, les commentaires apparaissent dans le widget par défaut "Commentaires récents". Ils apparaissent également dans le flux RSS.

Existe-t-il un moyen simple d'empêcher les commentaires d'un CPT de s'afficher dans des widgets, des flux, etc.?

Je vous remercie

3
smartcat

Suppression des commentaires des types d'articles personnalisés du widget Commentaires récents

Les arguments du widget de commentaires récents peuvent être personnalisés à l'aide du filtre widget_comments_args. Pour personnaliser les types d'articles dont les commentaires seront inclus, nous pouvons personnaliser la variable $post_type:

$post_type Type de publication ou tableau de types de publication pour lesquels récupérer des commentaires associés. Passez "any" pour correspondre à n'importe quelle valeur. Par défaut vide.

Par défaut, tous les commentaires des types de publication seront inclus. Le code suivant définit $post_type dans un tableau contenant uniquement post afin que seuls les commentaires des publications apparaissent. Pour inclure des types de publication supplémentaires, ajoutez-les simplement au tableau.

add_action( 'widget_comments_args', 'wpse_widget_comments_args' );
function wpse_widget_comments_args( $args ) {
    $args['post_type'] = [
        'post',
    ];

    return $args;
}

Suppression des commentaires de types de publications personnalisées du flux de commentaires RSS

Cet extrait de code (basé sur la solution trouvée ici ) vous permettra de supprimer les commentaires associés aux types de publication book et product (à titre d’exemple) du flux de commentaires RSS (http://example.com/comments/feed). Cela fonctionne en modifiant la clause where de la requête RSS de commentaires à l'aide du filtre comment_feed_where.

add_filter( 'comment_feed_where', 'wpse_comment_feed_where' );
function wpse_comment_feed_where( $where ) {
    return $where . " AND wp_posts.post_type NOT IN ( 'book', 'product' )";
}
1
Dave Romsey