评论者只能在WordPress中看到他的评论

时间:2014-10-30 作者:lu-bhz

我正在建立一个研究网站,我的参与者都将登录使用该网站。我想让这些参与者只能看到自己的评论,这样其他用户的评论就会被隐藏。

我正在使用注释。php文件,其中包括以下简单代码和用于格式化注释输出的回调:

<?php if ( have_comments() ) : ?>
      <ol class="commentlist">
          <?php wp_list_comments( \'type=comment&callback=custom_comentarios\' ); ?>
      </ol>
      <?php if ( ! comments_open() ) : ?>
          <p class="no-comments">Comments are closed</p>
      <?php endif; ?>
<?php endif; ?>
这是关于函数的简单代码。php格式化注释输出:

<?php
/* Custom callback function for displaying comments, see comments.php */
function custom_comentarios($comment, $args, $depth) {
   $GLOBALS[\'comment\'] = $comment; ?>
   <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
     <div id="comment-<?php comment_ID(); ?>">
      <?php if ($comment->comment_approved == \'0\') : ?>
         <em><?php _e(\'Your comment is awaiting moderation.\') ?></em>
         <br />
      <?php endif; ?>
      <?php comment_text() ?>     
     </div>
<?php
}
?>
我需要在这段代码周围放置什么来过滤注释并仅向其所有者显示它们?我必须提到,我不是程序员,也不知道php语法:-/我知道它会是这样的:获取当前用户,检查当前用户在当前帖子上是否有评论,如果是,则显示评论。但是如何用php编写呢?

2 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

要实现这一点,您需要做的是提供wp_list_comments(), 那应该是$comments 描述如下:

(数组)(可选)数组由以下方式获得get_comments 查询
Default:默认返回get_comments.

这实际上明确了你需要做什么get_comments(). 下面是如何实现这一目标的一般示例:

$user_id = get_current_user_id();
$user_specific_comments = get_comments(
    array(
        \'user_id\' => $user_id
    )
);
wp_list_comments(
    array(
        \'per_page\' => 3
    ),
    $user_specific_comments
);
原则现在已经很清楚了,所以这应该让你开始了。

SO网友:Pete

这只允许帖子作者和评论作者之间进行私人消息传递…//https://wpquestions.com/Only_post_author_and_commentor_can_view_their_own_comments/10125 函数restrict\\u comments($comments,$post\\u id){

global $post;

$user = wp_get_current_user();

if($post->post_author == $user->ID){

        return $comments;

}

foreach($comments as $comment){

    if(  $comment->user_id == $user->ID || $post->post_author == $comment->user_id  ){

        if($post->post_author == $comment->user_id){

            if($comment->comment_parent > 0){

                $parent_comm = get_comment( $comment->comment_parent );

                if( $parent_comm->user_id == $user->ID ){

                    $new_comments_array[] = $comment;       

                }

            }else{

                    $new_comments_array[] = $comment;   

            }

        }else{

            $new_comments_array[] = $comment;           

        }

    }

}

 return $new_comments_array; }



add_filter( \'comments_array\' , \'restrict_comments\' , 10, 2 );

结束

相关推荐

Customise Author Page?

在我的网站上,我很乐意这样做,如果读者点击作者或用户的名字,它会把他们带到一个页面,显示他们的个人资料图片和简历。我博客上的所有用户都可以选择在注册前添加个人资料图片或个人简历。我如何才能使其在单击用户名时显示他们提交的信息?我认为要做到这一点,你必须编辑作者。php文件,但我不确定从哪里开始。非常感谢您的帮助。顺便说一句,我目前正在努力学习PHP,希望不久我就不会问这样的问题了。