コメントの編集権の調整。投稿者が人のコメントを編集、削除できないようにする
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 );
関連記事:
・「あなたのコメント」を管理画面のメニューに追加
・「あなたのコメント」に投稿者自身が、人の記事に書いたコメントを表示
・「あなたのコメント」の上のコメントメニュー(スパム、承認待ち等を)削除
・「あなたのコメント」の上のコメントメニュー(スパムチェック、一括操作も)削除