web-dev-qa-db-fra.com

Pourquoi les commentaires sont-ils désactivés par défaut sur mes custom_post_types?

J'utilise un type de message personnalisé + taxonomies dans une solution de podcast pour un client. Le paramètre (paramètres >> discussion) pour les commentaires est défini sur "autoriser les commentaires". Lorsque j'ajoute/modifie des publications sous l'onglet "publications", les commentaires sont activés par défaut.

Cependant, lorsque j'ajoute/modifie des publications sous le type de publication personnalisée (podcast), les commentaires sont désactivés par défaut.

L'utilisateur peut toujours activer manuellement les commentaires pour chaque publication, mais ce n'est évidemment pas idéal. Pensées?

UPDATE: Code pertinent dans functions.php

function create_my_post_types() {
    register_post_type( 'podcast',
        array(
            'labels' => array(
                'name' => __( 'Podcast' ),
                'singular_name' => __( 'Podcast' ),
                'new_item' => __( 'New Episode' ),
                'add_new_item' => __( 'Add New Episode' )
            ),
            'public' => true,
            'hierarchical' => true,
            'menu_icon' => get_stylesheet_directory_uri() . '/assets/podcast-icon.png', // 16px16
            'menu_position' => 9,
            'supports' => array( 'title', 'editor', 'comments', 'post-templates'),
            'register_meta_box_cb' => 'add_podcast_metaboxes' // This registers the metabox that we'll add later.
        )
    );
}
6
timshutes

Ok, alors j'ai résolu ça. Voici ce qui semble être le problème.

Les commentaires sont désactivés par défaut pour les post-types personnalisés. Cela se produit même si vous les avez activés dans les paramètres généraux

Pour résoudre ce problème, tout ce que je devais faire était le suivant:

  1. Dans PARAMÈTRES> DISCUSSION, décochez la case "Autoriser les personnes à poster des commentaires sur les nouveaux articles".
  2. Cliquez sur "Enregistrer les modifications"
  3. Maintenant, revenez en arrière et vérifiez à nouveau "Autoriser les gens à poster des commentaires sur les nouveaux articles"
  4. Cliquez sur "Enregistrer les modifications"

Il semble que pour les types de publication personnalisés, vous devez en quelque sorte relancer ce paramètre. La nouvelle case sera activée par défaut pour toutes les nouvelles publications pour les types de publication personnalisés créés. Les messages existants conserveront leur réglage précédent. Je suppose que c'est la même chose pour autoriser les rétroliens. Espérons que cela aide quelqu'un ...

11
timshutes

C'est l'état par défaut .. vous devez modifier la "Ligne de prise en charge" où vous créez votre type de publication personnalisé.

Signification de cette ligne:

// ou quelque chose de similaire qui commence pareil

'supports' => array('title','editor','author','excerpt','revisions'),

À cette ligne:

'supports' => array('title','editor','author','excerpt','comments','revisions'),

J'espère que cela t'aides.
Salut, Sagive.

FONCTION AJOUTÉE (FICHIER DES FONCTIONS INTÉRIEURES):

function default_comments_on( $data ) {
    if( $data['post_type'] == 'your_custom_post_name' ) {
        $data['comment_status'] = 1;
    }

    return $data;
}
add_filter( 'wp_insert_post_data', 'default_comments_on' );
7
Sagive SEO

Aucune des suggestions suivantes n'a fonctionné pour moi. La fonction de Sagive SEO a presque fonctionné pour moi. J'ai consulté ma base de données pour constater que les seules valeurs de comment_status sont ouvertes et fermées. Cette fonction a inséré 1 comme valeur. J'ai révisé la fonction et cela semble fonctionner parfaitement maintenant. J'espère que ça aidera quelqu'un.

function default_comments_on( $data ) {
    if( $data['post_type'] == 'your_custom_post_type_name' ) {
        $data['comment_status'] = 'open';
    }

    return $data;
}
add_filter( 'wp_insert_post_data', 'default_comments_on' );
2
JediTricks007

Prenons un essai aléatoire, mais devez-vous ajouter des "commentaires" au paramètre de tableau de supports, dans l'appel register_post_type()?

1
Jason Rhodes