Il existe une fonction sous WordPress appelée wp_list_comments() pour une utilisation dans la page comments.php de votre thème. Elle prend automatiquement en charge de l’affichage de l’auteur, la date, avatar, commentaire de texte, etc… nous allons voir comment personnaliser l’affichage de vos commentaires.
La fonction wp_list_comments()
Je ne vais pas répéter tout ce qui peut être trouvé sur le Codex, voir wp_list_comments() pour plus de détails, mais globalement la fonction a un ensemble assez limité d’arguments, dont aucun ne se rapportent à certains des éléments mentionnés ci-dessus. Par exemple, il n’est pas possible d’exclure la date de commentaire, ou avatar, en jouant directement avec les arguments de la fonction.
Personnaliser l’affichage de vos commentaires avec le callback
Heureusement, les développeurs WP ont vu bon d’inclure l’utilisation d’une fonction de rappel (Callback) dans wp_list_comments(). La fonction de rappel est appelée comme ceci:
[pastacode manual= »wp_list_comments(‘type%3Dcomment%26callback%3Dmytheme_comment’)%3B » provider= »manual » lang= »php »/]
Ce que cela signifie est que wp_list_comments() retournera la fonction de rappel plutôt que sa sortie par défaut. Donc, pour créer notre propre production personnalisée, nous avons simplement besoin de définir une fonction appropriée de rappel, dans cet exemple, une fonction appelée mytheme_comment, dans notre fichier functions.php de notre thème.
Une fonction de rappel personnalisée « par défaut »
Voici la fonction de rappel personnalisée, exemple montré dans le Codex :
[pastacode manual= »function%20mytheme_comment(%24comment%2C%20%24args%2C%20%24depth)%20%7B%0D%0A%20%20%20%24GLOBALS%5B’comment’%5D%20%3D%20%24comment%3B%20%3F%3E%0D%0A%20%20%20%3Cli%20%3C%3Fphp%20comment_class()%3B%20%3F%3E%20id%3D%22li-comment-%3C%3Fphp%20comment_ID()%20%3F%3E%22%3E%0D%0A%20%20%20%20%20%3Cdiv%20id%3D%22comment-%3C%3Fphp%20comment_ID()%3B%20%3F%3E%22%3E%0D%0A%20%20%20%20%20%20%3Cdiv%20class%3D%22comment-author%20vcard%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%3C%3Fphp%20echo%20get_avatar(%24comment%2C%24size%3D’48’%2C%24default%3D’%3Cpath_to_url%3E’%20)%3B%20%3F%3E%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%3C%3Fphp%20printf(__(‘%3Ccite%20class%3D%22fn%22%3E%25s%3C%2Fcite%3E%20%3Cspan%20class%3D%22says%22%3Esays%3A%3C%2Fspan%3E’)%2C%20get_comment_author_link())%20%3F%3E%0D%0A%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%20%3C%3Fphp%20if%20(%24comment-%3Ecomment_approved%20%3D%3D%20’0′)%20%3A%20%3F%3E%0D%0A%20%20%20%20%20%20%20%20%20%3Cem%3E%3C%3Fphp%20_e(‘Your%20comment%20is%20awaiting%20moderation.’)%20%3F%3E%3C%2Fem%3E%0D%0A%20%20%20%20%20%20%20%20%20%3Cbr%20%2F%3E%0D%0A%20%20%20%20%20%20%3C%3Fphp%20endif%3B%20%3F%3E%0D%0A%0D%0A%20%20%20%20%20%20%3Cdiv%20class%3D%22comment-meta%20commentmetadata%22%3E%3Ca%20href%3D%22%3C%3Fphp%20echo%20htmlspecialchars(%20get_comment_link(%20%24comment-%3Ecomment_ID%20)%20)%20%3F%3E%22%3E%3C%3Fphp%20printf(__(‘%251%24s%20at%20%252%24s’)%2C%20get_comment_date()%2C%20%20get_comment_time())%20%3F%3E%3C%2Fa%3E%3C%3Fphp%20edit_comment_link(__(‘(Edit)’)%2C’%20%20’%2C »)%20%3F%3E%3C%2Fdiv%3E%0D%0A%0D%0A%20%20%20%20%20%20%3C%3Fphp%20comment_text()%20%3F%3E%0D%0A%0D%0A%20%20%20%20%20%20%3Cdiv%20class%3D%22reply%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%3C%3Fphp%20comment_reply_link(array_merge(%20%24args%2C%20array(‘depth’%20%3D%3E%20%24depth%2C%20’max_depth’%20%3D%3E%20%24args%5B’max_depth’%5D)))%20%3F%3E%0D%0A%20%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%20%20%20%20%20%3C%2Fdiv%3E%0D%0A%3C%3Fphp%0D%0A%20%20%20%20%20%20%20%20%7D » provider= »manual » lang= »php »/]
Fondamentalement, si nous devions exécuter cette fonction et afficher sa sortie, nous voyons exactement le même résultat que les commentaires habituels sur ce site. En d’autres termes, cette fonction va produire le même résultat que le code suivant dans le fichier de comments.php d’un thème typique :
[pastacode manual= »%3C%3Fphp%20wp_list_comments(‘type%3Dcomment’)%3B%20%3F%3E » provider= »manual » lang= »php »/]
Maintenant, nous avons une base de travail, il n’est pas trop difficile de modifier cette fonction pour nous donner la sortie que nous voulons.
Comment personnaliser l’affichage de vos commentaires
Simplifions les étapes de sorte que vous pouvez faire quelque chose de similaire sur votre propre site.
- Regardez votre comments.php fichier et trouver l’appel à wp_list_comments() (ex:’callback’ => ‘the_list_comments’)
- Dans wp_list_comments(), ajouter votre appel personnalisé (ex:’callback’ => ‘my_list_comments’)
- Prenez la fonction de rappel personnalisé dans notre exemple (ou celui du Codex) et collez ce code dans votre fichier functions.php
- Assurez-vous que le nom de la fonction est la même dans les deux wp_list_comments() fonction dans comments.php , et du fichier functions.php de votre thème
- Modifier la fonction de rappel dans votre fichier functions.php comme vous souhaitez. Remarque : ne pas inclure une fermeture li tag – WordPress ajoute ce automatiquement en fonction du commentaire sortie.
- Ajouter de nouveaux styles à votre fichier style.css
Bonjour ! Merci pour tous ces conseils que vous nous donnez ! J’ai une petite question, peut être que vous pourriez m’aider à trouver une piste de recherche ..
J’ai activé la fonction pour demander à l’utilisateur de devoir se connecter pour pouvoir laisser un commentaire, j’utilise Genesis pour pour la création de mon thème, seulement je ne vois pas quelle fonction ou hook ou filtre pour modifier la phrase « Vous devez être connecté pour rédiger un commentaire », j’aimerai pouvoir changer le lien de la page de connexion par un autre.. Si vous aviez la bonne réponse ou je peux aller voir ce serai formidable !? Bone journée ! ^^
Bonjour Raphaël,
Avez-vous regardé dans le fichier langue de votre thème ? Un fichier à ouvrir avec Poedit…
Cordialement