web-dev-qa-db-fra.com

Comment appeler wp_list_comments () en dehors du modèle de commentaires?

Je tape simplement wp_list_comments () dans page.php mais rien n’est affiché. Mais si je place la balise comments_template () ici, le formulaire de commentaire, les commentaires et les pings sont affichés. Pourquoi est-ce, pourquoi ne puis-je pas utiliser wp_list_comments () dans page.php? Qu'est-ce que j'aurais pu faire de mal?

1
Richard B

Vous devez inclure la fonctionnalité de commentaires via comments_template(), car cette fonction n'inclut pas simplement le fichier comments.php, mais gère également toutes les requêtes et fonctions requises pour l'affichage des commentaires.

Alors que le Codex n'entre pas vraiment dans les détails , vous pouvez voir en regardant la source , que se passe-t-il?

<?php
/**
 * Loads the comment template specified in $file.
 *
 * Will not display the comments template if not on single post or page, or if
 * the post does not have comments.
 *
 * Uses the WordPress database object to query for the comments. The comments
 * are passed through the 'comments_array' filter hook with the list of comments
 * and the post ID respectively.
 *
 * The $file path is passed through a filter hook called, 'comments_template'
 * which includes the TEMPLATEPATH and $file combined. Tries the $filtered path
 * first and if it fails it will require the default comment template from the
 * default theme. If either does not exist, then the WordPress process will be
 * halted. It is advised for that reason, that the default theme is not deleted.
 *
 * @since 1.5.0
 * @global array $comment List of comment objects for the current post
 * @uses $wpdb
 * @uses $post
 * @uses $withcomments Will not try to get the comments if the post has none.
 *
 * @param string $file Optional, default '/comments.php'. The file to load
 * @param bool $separate_comments Optional, whether to separate the comments by comment type. Default is false.
 * @return null Returns null if no comments appear
 */
?>
1
Chip Bennett

Essayez de joindre wp_list_comments () comme ceci:

<ol class="commentlist">
<?php wp_list_comments();?>
</ol>

comments_template () charge simplement comments.php, qui utilise wp_list_comments dans une classe CSS englobante.

HTH

0
rexposadas