获取当前帖子上所有评论者的列表

时间:2015-01-31 作者:Nathan

我正在尝试获取对帖子发表评论的所有人的列表,然后对照当前登录的用户检查该列表。如果当前登录的用户包含在该列表中,那么我不会显示评论表单,否则他们可以留下评论。所以从本质上说,我只希望人们能够在每篇帖子上发表一次评论。

我想我很接近了,但我一直在列出所有对任何帖子发表评论的人的名单。

这是我的代码:

    <?php global $post;
      $comments = get_comments($post->ID); // get all comment author emails
      foreach($comments as $comment) :
        $existingcommenters = $existingcommenters.\', \'.$comment->comment_author_email;
      endforeach;

      $current_user = wp_get_current_user(); // then we check those emails against the current users email
      $commenting = $current_user->user_email; ?>

<?php $args = array( // i then list my arguments, which I\'ve omitted for clarity here
    ); ?>

<?php if (strpos($existingcommenters,$commenting) !== false) { // if the user already has a review, don\'t let them post another ?>
    <p>You\'ve already reviewed this business.</p>
<?php } else { comment_form($args); } ?>
所以我想$existingcommenters 应该只包含对此帖子发表评论的人的列表,如$comments = get_comments($post->ID); 应该将该调用设置为仅获取此帖子的评论列表,对吗?

如果我回音$post->ID 在这段代码的任何地方,它都会成功地返回当前帖子的ID。

但如果我回应$existingcommenters, 它显示了每个评论者的列表。

知道我做错了什么吗?

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

get_comments 不要将post ID作为参数,而是可以在其中设置包括post ID在内的各种查询标准的数组。请参阅codexhttp://codex.wordpress.org/Function_Reference/get_comments.

您甚至可以使用author_email 要生成的参数get_comments 为你做大部分工作。

结束

相关推荐

COMMENTS_NUMBER打印失败

我想使用模板标记显示帖子上的评论数 <?php comments_number( $zero, $one, $more ); ?> 但是,由于某些原因,此标记不起任何作用,也不会打印到页面上。你可以看看我在http://blog.diginomics.com/bitcoins-innate-regulation/以下是3个模板标记的完整代码片段:author、category和comment: <div class=\