未显示COMMENT_REPLY_LINK()

时间:2016-05-11 作者:olliew

在里面functions.php 我将注释回复排入队列,并定义一个回调函数用于wp_list_comments():

function theme_queue_js(){
    if ( 
              ! is_admin() 
           && is_singular() 
           && comments_open() 
           && get_option(\'thread_comments\') 
    )
        wp_enqueue_script( \'comment-reply\' );
}
add_action(\'wp_print_scripts\', \'theme_queue_js\');


function simple_comment_format($comment, $args, $depth) {
    $GLOBALS[\'comment\'] = $comment; ?>
    <?php if ( $comment->comment_approved == \'1\'): ?>
    <li <?php comment_class(); ?>>
        <article>
            <time><?php comment_date(); ?></time>
            <h4><?php comment_author(); ?></h4>
            <?php comment_text(); ?>
            <?php comment_reply_link(); ?>
        </article>
    <?php endif;
}
并且在comments.php 我将事情保持在最低限度:

<section id="comment-form">
  <?php comment_form() ?>
</section>

<?php if ( have_comments() ): ?>
    <section class="commentlist">
        <h2>Comments!</h2>
        <ul>
            <?php   
                wp_list_comments( 
                    \'type=comment&max_depth=5&callback=simple_comment_format\'
                ); 
            ?>
        </ul>
    </section>
<?php endif; ?>
除了没有显示任何评论的评论回复链接外,一切正常。关于修改注释的文档通常看起来非常糟糕!谢谢你的帮助

1 个回复
最合适的回答,由SO网友:birgire 整理而成

您应该尝试替换

<?php comment_reply_link(); ?>
使用:

<?php comment_reply_link( $args ); ?>
并确保$args[\'depth\'] 不为零或大于或等于$args[\'max depth\']. 会有的no output 如果不是这样的话。

如果不起作用,可以尝试将注释ID或注释对象作为第二个输入参数添加到comment_reply_link( $args, $comment ).

还要检查注释是否打开。

Update:

如果我们看看default callback, 我们看到comment_reply_link() 结构如下:

comment_reply_link( array_merge( $args, array(
    \'add_below\' => $add_below,
    \'depth\'     => $depth,
    \'max_depth\' => $args[\'max_depth\'],
    \'before\'    => \'<div class="reply">\',
    \'after\'     => \'</div>\'
 ) ) );
在那里我们可以看到depthmax_depth 包括。