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 !</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' );