Removing <li> from Comment

时间:2013-12-21 作者:MrJustin

我正在制作一个自定义评论模板,我不希望使用列表来显示评论。

默认情况下,WordPress会将以下内容放在每条评论的末尾:

</li><!-- #comment-## -->
我知道我可以破解核心wp-includes/comment-template.php, 但这将使我无法正常更新。有没有办法删除这个?

以下是我的函数回调:

<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 个回复
最合适的回答,由SO网友:fuxia 整理而成

wp_list_comments() 接受walker 在其第一个参数的数组中。这是一个呈现输出的类。如果不提供,将使用默认类,Walker_Comment. 你可以在wp-includes/comment-template.php.

要更改完整的注释列表,请在functions.php 哪一个extends 默认类:

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
    }
}
然后你打电话的时候就用这个类wp_list_comments():

wp_list_comments(
    array (
        \'walker\' => new WPSE_127257_Walker_Comment
    )
);

结束