【WordPressのカスタム】
プラグイン不要!投稿者権限のユーザーに自分の投稿のみを表示させる方法
WordPressの投稿者権限では、記事の投稿は可能ですが、他の投稿者が書いた記事も管理画面で見えてしまう仕様になっています。しかし、自分の記事だけを一覧で見たい場合や、他の投稿者の記事を表示させたくない場合には不便です。今回は、WordPressの管理画面で、投稿者が自分が書いた記事だけを表示できるようにする方法をご紹介します。投稿者権限のユーザーに自分の投稿のみを表示させる方法

投稿者権限のユーザーが、管理画面で自分の投稿だけをリスト表示できるようにするには、以下のコードをテーマの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');
【プログラムの解説】
- ◎show_only_authorpost()関数が、ログイン中のユーザーの投稿だけを管理画面で表示するためのフィルタを設定します。
- ◎**is_admin()で管理画面かどうか確認し、current_user_can('author')**で投稿者権限を持つユーザーかをチェック。
- ◎投稿者権限のユーザーの場合、自分の投稿だけが表示されるようにクエリをフィルタリングします。
テンプレートのカスタマイズ
前のコードだけではテンプレートとして使えますが、そのままでは機能しません。そこで、WordPressのループや必要なHTML構造、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' );
【プログラムの解説】
- ◎show_only_authorimage()関数は、管理画面のメディアライブラリで、自分の画像のみを表示するためのフィルタを設定します。
- ◎**is_admin()で管理画面かどうかを確認し、current_user_can('author')**で投稿者権限を持つユーザーかどうかをチェックします。
- ◎さらに、**$_POST['action'] == 'query-attachments'**でメディアライブラリが表示されるときのリクエストか確認し、投稿者がアップロードした画像だけをクエリでフィルタリングします。
- ◎**add_filter()**を使って、この条件をメディアの取得クエリに適用しています。