「あなたのコメント」「あなたの記事へのコメント」の編集権の調整 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 );

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

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

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

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

コメントを残す