web-dev-qa-db-ja.com

コメント投稿者はwordpressで自分のコメントだけを見るべきです

研究用のサイトを作成しています。参加者全員がこのサイトを使用するためにログインします。他のユーザーのコメントが隠されるように、私はこれらの参加者が自分のコメントだけを見ることができるようにしたいと思います。

私はcomments.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; ?>

そして、コメント出力をフォーマットするためのfunctions.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で書くのですか?

1
lu-bhz

これを実現するために必要なことは、 wp_list_comments() の2番目のパラメーターを提供することです。これは$commentsであり、次のように記述されています。

(配列)(オプション) get_comments クエリで取得した配列。
デフォルト: 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
);

原理は現在明らかである、それでこれはあなたを始めさせるべきである。

1
Nicolai

これにより、投稿者とコメント投稿者間でのプライベートメッセージングが可能になります。// https://wpquestions.com/Only_post_author_and_commentor_can_view_their_own_comments/10125 関数restrict_comments($ comments、$ post_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 );
0
Pete