「コメント一覧」に「あなたの記事に他ユーザーが書いたコメント」のみを表示する方法
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の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の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')) {
}
|
を削除すればいい。
明日試したくなるカスタマイズ、ネットな日々に役立つ小技と、たまに旅行の妄想と。