「スマホ・パソコン・Web関連」カテゴリーアーカイブ

「コメント」に、「あなたの記事に他ユーザーが書いたコメント」のみを表示させる WordPress BuddyPressカスタマイズメモ

「コメント一覧」に「あなたの記事に他ユーザーが書いたコメント」のみを表示する方法

WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。

そのままの状態では、投稿者でも、全員のコメントが見えるし、編集、削除もできてしまう。

管理画面のコメントには、自分の投稿記事に対してつけられたコメントのみを表示する。

コメントの編集権に関しては、人が書いたコメントは編集できないようにしておく。
 

functions.php へ記述

//投稿者のみ、「自分の投稿」へのコメントのみ表示

if (!current_user_can('administrator')) {
function myblogs_user_comments_only($query){
 global $pagenow;
 if('edit-comments.php' != $pagenow || $query->is_admin) { //コメントページで
  return $query;
 } else {
  global $user_ID;
  $query->query_vars['post_author'] = $user_ID; //記事投稿者とログインユーザーIDが一致のものだけ
 }
 return $query;
}
add_filter('pre_get_comments','myblogs_user_comments_only');
}

“管理者”でも非表示にしたい場合は、一番上と一番下の

if (!current_user_can('administrator')) {

}

を削除すればいい。

なお、
投稿者が人のコメントを編集、削除できないようにする方法はこちらを参照。

「あなたのコメント」「あなたの記事へのコメント」の編集権の調整 WordPress BuddyPressカスタマイズメモ

コメントの編集権の調整。投稿者が人のコメントを編集、削除できないようにする

WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。

自分の投稿に対しての、人のコメントは編集させたくない。

人の投稿につけた、自分のコメントは編集できるようにしておく。
 

functions.php へ記述

管理者権限以外の場合、コメントページ(自分の投稿へつけてくれた、人のコメント一覧を表示している)の編集権を剥奪する。

//「自分の投稿」へのコメントの編集権削除と、後半「自分のコメント」の編集権付与
// $allcaps[$cap] = true; が権限与える、 unset( $allcaps[$cap] ); が剥奪

if ( 'edit-comments.php' == $pagenow && !current_user_can('administrator')  ){
function only_edit_comment() {
function remove_comment_cap( $allcaps, $caps, $args ) {
 global $pagenow;
 if ( 'edit_comment' == $args[0] && get_current_user_id() == $args[1] && 'edit-comments.php' == $pagenow ) {
  foreach ( $caps as $cap ) {
   unset( $allcaps[$cap] ); //コメント編集権剥奪
  }
 }
 if ( 'edit_comment' == $args[0] && get_current_user_id() == $args[1] && 'edit-comments-mine.php' == $pagenow ) {
  foreach ( $caps as $cap ) {
   $allcaps[$cap] = true; //「あなたのコメント」ページでは編集権付与
  }
 }
 return $allcaps;
}
add_filter( 'user_has_cap', 'remove_comment_cap', 10, 3 );
}
add_action( 'admin_head-edit-comments.php', 'only_edit_comment', 10, 3);
}

//コメント編集権限与えるため、「あなたのコメントページ」に「edit(編集)とtrash(削除する)」だけ残す

if ( 'edit-comments-mine.php' == $pagenow && !current_user_can('administrator')  ) {
//comment-edit-mineのページのみ
function only_edit_comment_mine() {
//メニュー表示非表示切り替え
function self_comment_del( $actions, $comment ) {
unset($actions['reply']);
unset($actions['approve']);
unset($actions['unapprove']);
unset($actions['quickedit']);
//unset($actions['edit']);
unset($actions['spam']);
//unset($actions['trash']);
 return $actions;
}
add_filter( 'comment_row_actions', 'self_comment_del', 10, 2 );

//編集権を与える時に使う処理

function add_comment_cap( $allcaps, $caps, $args ) {
 global $pagenow;
 foreach ( $caps as $cap ) {
  $allcaps[$cap] = true;
 }
 return $allcaps;
}
add_filter( 'user_has_cap', 'add_comment_cap', 10, 3 );

関連記事:
・「あなたのコメント」を管理画面のメニューに追加

・「あなたのコメント」に投稿者自身が、人の記事に書いたコメントを表示

・「あなたのコメント」の上のコメントメニュー(スパム、承認待ち等を)削除

・「あなたのコメント」の上のコメントメニュー(スパムチェック、一括操作も)削除

WordPressのオリジナルメニュー「あなたのコメント」の上のコメントメニュー(スパムチェック、一括操作も)削除 BuddyPressカスタマイズメモ

オリジナルメニュー「あなたのコメント」の上のコメントメニュー(スパムチェック、一括操作も)削除

 
WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。

・「あなたのコメント」を管理画面のメニューに追加

・「あなたのコメント」に投稿者自身が、人の記事に書いたコメントを表示


 

functions.php へ記述

後々、人が書いたコメントを編集したり削除したりできなくするので、スパムチェック、一括操作等も削除しておく。

//投稿一覧画面とコメント画面のバルクメニューを非表示

if (!current_user_can('administrator')) {
add_filter( 'bulk_actions-edit-post', '__return_empty_array', 100 ); //投稿のバルクメニュー
add_filter( 'bulk_actions-edit-comments', '__return_empty_array', 100 ); //コメントのバルクメニュー
add_filter( 'filter_by_comment-type-edit-comments', '__return_empty_array', 100 ); //コメントの編集用フィルター
add_filter( 'bulk_actions-edit-comments-mine', '__return_empty_array', 100 ); //あなたのコメントでのバルクメニュー
}

“管理者”でもメニューを削除したい場合は、一番上と一番下の

if (!current_user_can('administrator')) {

}

を削除すればいい。