Posted at

メディア選択時に自分の投稿写真だけ表示する

More than 5 years have passed since last update.

メディアメニューの一覧画面での方法は、

 http://liginc.co.jp/programmer/archives/4054

に記載の方法で実現可能。

しかし、投稿画面の「メディアを追加」で開かれる写真選択画面では、どうも上記のブログのfilterでは効かないらしく、他ユーザの画像も表示される。

admin-ajax.phpから動的に取得した一覧が表示されるのだが、おそらくシーケンスがメディアメニューのシーケンスとは少し違うのでしょう。上記のブログで利用しているfilterは効かないらしい。

調べてみると、admin-ajaxでの検索の場合は、"pre_get_posts"に設定するとできるようで。

add_action( "pre_get_posts", "set_ajax_media_query" );

function set_ajax_media_query( $wp_query ) {
global $current_user;

if( $wp_query ->query_vars['post_type'] != "attachment" ) {
return;
}

get_currentuserinfo();

if( $current_user->roles[0] == "administrator" ) {
return;
}

$wp_query->query_vars['author'] = $current_user->ID;
}

こんな感じで。$wp_queryは参照渡しなので、編集した内容はそのまま元の処理の中で使われる。

ただ、検索結果の数などには不整合が起きているので、その辺も含めて本当はなんとかしたいところ。