ワードプレスの投稿者権限では、記事の投稿だけができるようになっていますね。ただ、ワードプレスは複数の投稿者権限のユーザー全員に他のユーザーが投稿した記事も全て管理画面で見れてしまうという仕様になっています。
この場合、記事の修正などで自分の投稿だけを一覧で見たかったり、何らかの理由で他の投稿を魅せたくなかったりする場合多少困ってしまうかもしれません。今回は投稿者権限に管理画面においては自分の作った投稿だけが見えるようにする方法をご紹介します。
投稿者権限のユーザーに自分の投稿だけが見えるようにするコード
投稿者権限のユーザーに自分の投稿した記事だけが管理画面のリストで見えるようにするには下記のようにテーマのfunctions.php(外観>テーマの編集より編集可能です)に追記されてみてください。
function show_only_authorpost($query) { global $current_user; if(is_admin()){ if(current_user_can('author') ){ $query->set('author', $current_user->ID); } } } add_action('pre_get_posts', 'show_only_authorpost');
プログラムの解説
is_admin() → 現在のユーザーが管理画面内を閲覧中である場合
current_user_can(‘author’) → また現在のユーザーが投稿者権限である場合
$query->set(‘author’, $current_user->ID); → 投稿を呼び出す処理に自分の投稿した記事のみという条件を付与します
投稿者権限のユーザーに自分の投稿したメディアのみが見えるようにするコード
次に画像追加時のメディアライブラリのリストにも投稿者権限のユーザーが追加した画像のみが見えるようにしてみましょう。下記のようにテーマのfunctions.php(外観>テーマの編集より編集可能です)に追記されてみてください。
function show_only_authorimage( $where ){ global $current_user; if(is_admin()){ if(current_user_can('author') ){ if( isset( $_POST['action'] ) && ( $_POST['action'] == 'query-attachments' ) ){ $where .= ' AND post_author='.$current_user->data->ID; } } } return $where; } add_filter( 'posts_where', 'show_only_authorimage' );
プログラムの解説
isset( $_POST[‘action’] ) && ( $_POST[‘action’] == ‘query-attachments’ ) → 現在ユーザーがメディアリストを呼び出そうとしていることを示しています。
$where .= ‘ AND post_author=’.$current_user->data->ID; → このコードは、メディア(画像)の呼び出し処理に自分の投稿したメディアのみという条件を付与します