在没有wp_list_comments()的情况下显示线程注释

时间:2011-05-07 04:35:49

标签: php wordpress

我正在创建自定义评论布局,因此我没有使用wp_list_comments()。我的问题是我似乎无法找到有效地在彼此中显示回复的评论(线程)。

到目前为止,我已经拥有它,因此它只显示最顶层的评论。

<ol class="commentlist">
    <?php foreach ($comments as $comment) : ?>
        <?php if($comment->comment_parent == 0): ?>
        <li class="comment">

            <div class="main">
                <div class="name">
                    <?php if(get_comment_author_url()): ?>
                        <a href="<?php comment_author_url(); ?>"><?php comment_author(); ?></a>
                    <?php else: ?>
                        <?php comment_author(); ?>
                    <?php endif; ?>
                </div>
                <div class="text"><?php comment_text(); ?></div>
            </div>
            <div class="info">
                <?= get_avatar($comment, $size = '90'); ?>
                <div class="month"><?= comment_date('M'); ?></div>
                <div class="day"><?= comment_date('dS'); ?></div>
                <div class="year"><?= comment_date('Y'); ?></div>
            </div>

            <div class="clear"></div>
        </li>
        <?php endif; ?>
    <?php endforeach; ?>
</ol>   

我知道想要在此评论中显示回复的评论。

2 个答案:

答案 0 :(得分:0)

我看过你的代码,我认为对孩子的评论有限制。你有条件,父评论只会显示。

您需要为子注释创建一个或多个类或者CSS,并且还需要在此FOREACH循环内运行循环并仅显示其中Parent将是

的childes
  

$comment->comment_parent

如果我得到你的疑问,我想我是对的。

感谢。

答案 1 :(得分:0)

我已经找到了在使用自定义布局时如何实现线程注释。

在你的functions.php文件里面放置以下内容

<?php function comment_layout($comment, $args, $depth) {
    $GLOBALS['comment'] = $comment; ?>

            // Your custom layout here

<?php } ?>

现在,在comments.php文件中,只需将以下内容放在您希望显示注释的位置。

<?php wp_list_comments( array( 'callback' => 'comment_layout' ) ); ?>

这样做是循环所有注释(按正确顺序)并调用自定义布局以显示注释。