web-dev-qa-db-fra.com

Supprimer <li> du commentaire

Je crée un modèle de commentaire personnalisé et je ne souhaite pas utiliser une liste pour afficher des commentaires.

Par défaut, WordPress place le texte suivant à la fin de chaque commentaire:

</li><!-- #comment-## -->

Je sais que je pourrais pirater le wp-includes/comment-template.php central, mais cela ne me permettrait pas de mettre à jour normalement. Y a-t-il un moyen de supprimer cela?

Voici mes fonctions de rappel:

<section id="li-comment-<?php comment_ID(); ?>">
    <article id="comment-<?php comment_ID(); ?>" class="comment <?php if ($comment->comment_author_email == get_the_author_email()) { echo 'author-comment'; } ?>">

        <div class="comment-content">
            <aside class="comment-gravatar">
                <?php echo get_avatar($comment, '50'); ?>
            </aside>
            <?php comment_text(); ?>
        </div>

        <div class="comment-data">
            <div class="comment-author">
                <p>Posted by : <?php echo get_comment_author(); ?></p>
                <p>On <?php the_time('l, F jS, Y') ?>  at <?php the_time() ?></p>
            </div>
            <div class="comment-reply">
                <?php comment_reply_link( array_merge( $args, array( 'reply_text' => 'Reply to Comment', 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
            </div>
        </div>
    </article>
</section>
1
MrJustin

wp_list_comments() accepte une walker dans le tableau de son premier paramètre. C'est une classe qui rend la sortie. Si vous n'en fournissez pas, la classe par défaut sera utilisée, Walker_Comment. Vous pouvez le trouver dans wp-includes/comment-template.php.

Pour modifier la liste complète des commentaires, créez un lecteur personnalisé dans votre functions.php dont extends la classe par défaut:

class WPSE_127257_Walker_Comment extends Walker_Comment
{
    function start_lvl( &$output, $depth = 0, $args = array() ) {
        // do nothing.
    }
    function end_lvl( &$output, $depth = 0, $args = array() ) {
        // do nothing.
    }
    function end_el( &$output, $comment, $depth = 0, $args = array() ) {
        // do nothing, and no </li> will be created
    }
    protected function comment( $comment, $depth, $args ) {
        // create the comment output
        // use the code from your old callback here
    }
}

Et vous utilisez ensuite cette classe lorsque vous appelez wp_list_comments():

wp_list_comments(
    array (
        'walker' => new WPSE_127257_Walker_Comment
    )
);
3
fuxia