Attention pour que cela fonctionne il faut que les commentaires soient ouverts sur la page : cocher autoriser les commentaires

2. Comment l’utiliser dans une page

Va sur une page (ou article) où tu veux la discussion.

Dans l’éditeur (Gutenberg) ajoute un bloc “Code court / Shortcode”.

Mets dedans :

[page_discussion]

Mets la page à jour.

3. Vérifier les réglages de commentaires

Pour que ça marche, il faut que les commentaires soient ouverts sur cette page :

Modifier la page.

Dans la colonne de droite → onglet Discussion (ou dans les options de l’écran).

Cocher “Autoriser les commentaires”.

Mettre à jour.

Et aussi au niveau global, dans
Réglages > Discussion > Autoriser les visiteurs à publier des commentaires sur les nouveaux articles (option globale, même si ton shortcode appelle directement comment_form, c’est mieux que tout soit cohérent).

4. Ce que tu dois voir si tout est bon

Sur la page où tu as mis [page_discussion] :

Un titre “Discussion”,

La liste des commentaires (ou “Aucun message pour le moment. Lancez la discussion !”),

Le formulaire “Ajouter un message”.

Si tu ne vois rien du tout :

soit le code n’est pas chargé (mauvais fichier / mauvais thème actif),

soit tu n’es pas sur une page “singular” (mais si tu es sur une page classique, c’est bon),

soit le shortcode n’est pas reconnu (dans ce cas, [page_discussion] s’affiche en clair dans la page).

// Shortcode [page_discussion] : discussion type "forum" pour la page courante
function dp_page_discussion_shortcode( $atts ) {
    if ( ! is_singular() ) {
        // On ne fait quelque chose que sur une page / un article individuel
        return '';
    }

    $post_id = get_the_ID();

    // Optionnel : n'autoriser que les pages (et pas les articles)
    // if ( get_post_type( $post_id ) !== 'page' ) {
    //     return '';
    // }

    // Vérifie si les commentaires sont ouverts pour cette page
    if ( ! comments_open( $post_id ) ) {
        return '<p>La discussion n’est pas ouverte pour cette page.</p>';
    }

    ob_start();
    ?>
    <div class="dp-discussion">
        <h2 class="dp-discussion-titre">Discussion</h2>

        <div class="dp-discussion-liste">
            <?php
            // Affiche les commentaires existants
            $comments = get_comments( array(
                'post_id' => $post_id,
                'status'  => 'approve',
                'order'   => 'ASC', // du plus ancien au plus récent
            ) );

            if ( ! empty( $comments ) ) :
                ?>
                <ul class="dp-commentaires">
                    <?php
                    wp_list_comments( array(
                        'style'      => 'ul',
                        'short_ping' => true,
                        'avatar_size'=> 32,
                    ), $comments );
                    ?>
                </ul>
                <?php
            else :
                ?>
                <p>Aucun message pour le moment. Lancez la discussion&nbsp;!</p>
                <?php
            endif;
            ?>
        </div>

        <div class="dp-discussion-formulaire">
            <?php
            // Formulaire pour ajouter un commentaire
            comment_form( array(
                'title_reply'          => 'Ajouter un message',
                'title_reply_to'       => 'Répondre à %s',
                'label_submit'         => 'Envoyer',
                'comment_notes_before' => '',
                'comment_notes_after'  => '',
            ), $post_id );
            ?>
        </div>
    </div>
    <?php

    return ob_get_clean();
}
add_shortcode( 'page_discussion', 'dp_page_discussion_shortcode' );
  • bricoler/prive/blog/realisation-blog/discussion
  • Dernière modification : 2025/11/29 20:12
  • de dpt