[WordPress]他のユーザーのコメントを編集したり削除したりできないようにする
この情報にたどり着くまでに随分と時間がかかったので記録。
WordPressを利用した会員サイトでは、他のユーザーのコメントを編集できる状態にしておくと、他人のメールアドレスを閲覧できてしまう。
これを防ぐために、他人のコメントを編集できないようにする。
function.phpに以下を追記すればよい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | add_action( 'pre_get_comments', 'my_pre_get_comments' ); function my_pre_get_comments( $query ) { if ( is_admin() && ! current_user_can( 'administrator' ) && 'edit-comments.php' == $GLOBALS['pagenow'] ) { $query->query_vars['user_id'] = get_current_user_id(); } } add_filter( 'user_has_cap', 'my_user_has_cap', 10, 3 ); function my_user_has_cap( $allcaps, $caps, $args ) { if ( 'edit_comment' == $args[0] && get_current_user_id() == $args[1] ) { foreach ( $caps as $cap ) { $allcaps[$cap] = true; } } return $allcaps; } |
ちなみに、12行目を
unset( $allcaps[$cap] );
に変更すると、自分が他人の投稿につけたコメントの編集ができなくなる。
この記事へのコメントはこちら