web-dev-qa-db-ja.com

comment_reply_link()が表示されない

functions.phpでは、comment-replyをエンキューし、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; ?>

コメント返信リンクがどのコメントにも表示されないことを除けば、すべて問題なく機能しています。一般にコメントを修正することに関するドキュメンテーションは本当に悪いようです!助けてくれてありがとう

3
olliew

あなたは交換しようとするべきです

<?php comment_reply_link(); ?>

と:

<?php comment_reply_link( $args ); ?>

$args['depth']がゼロまたは$args['max depth']以上ではないことを確認します。 何も出力されません そうでない場合は/。

それでもうまくいかない場合は、コメントIDまたはコメントオブジェクトをcomment_reply_link( $args, $comment )の2番目の入力パラメータとして追加してみてください。

コメントがopenであるかどうかも確認してください。

更新:

defaultコールバック を見ると、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がどのように含まれているかを見ることができます。

3
birgire