Wordpress回复评论链接

时间:2016-08-22 03:13:54

标签: javascript php wordpress nested comments

感觉我尝试了很多东西,所以我来这里寻求帮助。对其他人有用的事情对我没用。我试图嵌套评论,但我不能让他们工作。我的情况很奇怪,因为回复评论表单显示在您尝试回复的评论下方,但是当您点击帖子时,它不起作用。此外,如果您查看URL,它不会从#comment-(某个值)更改为#response-(某个值)。我可以看到js正在我的Chrome Inspector标签中正确加载。我正在将评论回复列入其中。

我尝试以不同的方式对脚本进行排队,将我的固定链接重置为默认值,并且无数代码更改但似乎无法正常工作。任何帮助将不胜感激。我试过四处寻找但是找不到解决方案或有类似问题的人。

[编辑]:我看不到在我的“检查器”标签中正确加载了comment-reply.js。我尝试通过在我的header.php中将blahblahblah放在我的wp_head上方来加载它,然后加载但没有效果。

以下是我正在使用的代码及其所在的文件:

single.php中:

<?php   

        if( comments_open() ) {

                comments_template();

            } 

            ?>


        <?php endwhile;

    endif;

?>   

的comments.php:

<?php if( have_comments() ): ?>

<h4 id="comments"><?php comments_number( 'No Comments', 'One Comment', '% Comments' ); ?></h4>

<ol class="commentlist">
<?php wp_list_comments(array(
    'callback' => 'ericshio_custom_comments',
    'max-depth' => 'x',
)); ?>
</ol>

<?php else : ?>  

    <p class="no-comments">No comments yet</p>  

<?php endif; ?>

<?php

    $comments_args = array(
        // Change the title of send button 
        'label_submit' => __( 'Post', 'ericshio' ),
        // Change the title of the reply section
        'title_reply' => __( 'Write a Reply or Comment', 'ericshio' ),
    );

?>

<?php comment_form($comments_args); ?>

的functions.php:

/* Custom Comments */

function ericshio_enqueue_comments_reply() {
    if( get_option( 'thread_comments' ) )  {
        wp_enqueue_script( 'comment-reply' );
    }
}

add_action( 'comment_form_before', 'ericshio_enqueue_comments_reply' );

function ericshio_custom_comments($comment, $args, $depth) {
    $GLOBALS[' comment '] = $comment; ?>
  <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
  <div id="comment-<?php comment_ID(); ?>">
      <div class="comment-author vcard">
          <?php echo get_avatar($comment, $size='48', $default='<path_to_url>' ); ?>

          <?php printf (__('<cite class="fn">%s</cite> <span class="says"> says:</span>'), get_comment_author_link()) ?>
</div>

      <?php if ($comment->comment_approved == '0') : ?>
      <em><?php _e('Your Comment is Awaiting Moderation.') ?> </em>
      <br />
      <?php endif ; ?>

      <div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link($comment->comment_ID )) ?>"><?php printf(__('%1$s at %2$s'), get_comment_date(), get_comment_time() ) ?> </a> <?php edit_comment_link(__(' (Edit) '), '   ', ' ') ?> </div>                            

      <div class="comment-wrapper">

        <?php comment_text() ?>

      <div class="reply">
          <?php comment_reply_link(array_merge($args, array('depth' => $depth, 'max_depth' => $args['max_depth'] ))); ?>

      </div>

      </div>

  </div>
<?php 

}

1 个答案:

答案 0 :(得分:1)

你应该阅读这个因为我过去遇到同样的问题所以我从这里解决了这个问题。

https://codex.wordpress.org/Template_Tags/wp_list_comments#Comments_Only_With_A_Custom_Comment_Display

参考:codex.wordpress.org

修改

header.php中,添加以下行wp_head()

if ( is_singular() ) wp_enqueue_script( 'comment-reply' );

该代码将评论回复javascript添加到单个帖子页面。

因此,您的评论表单有一个必须添加的新参数:

<?php comment_id_fields(); ?>

<a id="respond"></a>

<h3><?php comment_form_title(); ?></h3>

这会使评论表单标题为&#34;发表回复&#34;

<?php comment_form_title( 'Leave a Reply', 'Leave a Reply to %s' ); ?>

%s将替换为此人的姓名。这只会在javascript无法正常工作时发生。

<div id="cancel-comment-reply">

<small><?php cancel_comment_reply_link() ?></small></div>

这些只是您需要使用的一般原则。

参考:OttoPress