コメントの編集権の調整。投稿者が人のコメントを編集、削除できないようにする
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 );
関連記事:
・「あなたのコメント」を管理画面のメニューに追加
・「あなたのコメント」に投稿者自身が、人の記事に書いたコメントを表示