web-dev-qa-db-fra.com

Personnaliser le balisage de la liste de commentaires

Lors de la création d'un nouveau thème, nous devrons personnaliser le flux de commentaires. Pour cela, il existe deux fonctions: wp_list_comments() et get_comments(). Je ne suis pas sûr de savoir comment styliser les éléments internes qui en découlent, tels que Gravatar, description de commentaire, auteur de commentaire, etc. Pour pouvoir les personnaliser, je dois tout d'abord connaître les éléments DOM qui leur sont affectés. Où puis-je aller les trouver?

J'ai essayé dans presque toutes les sources, je suis incapable de comprendre correctement.

2

Vous devez utiliser wp_list_comments(), car cela appellera une classe Walker pouvant gérer les threads de commentaires:

// from wp_list_comments()
if ( empty($walker) )
    $walker = new Walker_Comment;

$walker->paged_walk($_comments, $max_depth, $page, $per_page, $r);

Walker_Comment gère le balisage pour les commentaires. Vous pouvez passer un marcheur personnalisé pour le changer.

Exemple:

class Simple_Comment_Walker extends Walker_Comment
{
    function start_el( &$output, $comment, $depth, $args, $id = 0 ) {
        $depth++;
        $GLOBALS['comment_depth'] = $depth;
        $GLOBALS['comment'] = $comment;

        print '<li>' . get_comment_author_link() . '<br>';
        comment_text();
    }
}

wp_list_comments( array ( 'walker' => new Simple_Comment_Walker ) );

Mais cela n'est pas nécessaire si vous souhaitez modifier uniquement le balisage de commentaire unique. Vous pouvez passer un paramètre callback à wp_list_comments() pour en faire autant:

function simple_callback() 
{
    print '<li>' . get_comment_author_link() . '<br>';
    comment_text();
}
wp_list_comments( array ( 'callback' => 'simple_callback' ) );
  • Utilisez un lecteur personnalisé si vous souhaitez également modifier les éléments de conteneur de la liste de commentaires, utilisez un rappel si vous souhaitez modifier uniquement les commentaires simples.

  • Vous pouvez tout écraser dans Walker_Comment, voir wp-includes/comment-template.php pour plus de détails.

  • Gardez à l'esprit que vous devriez ne pas fermer le premier conteneur de commentaires (dans mes exemples, le <li>), le Walker le fait lorsque tout le fil a été imprimé.

4
fuxia