私はこの問題にしばらく苦労してきましたが、うまくいかないようです。
私は持っています
- AdvancedCustomFieldsプラグインを備えたマルチユーザーwordpress3.5サイト。
- カスタム投稿タイプ、ギャラリー。作成者はカスタムフィールドから写真を投稿できます。
- ユーザープロファイルのカスタムフィールド。
作成者が写真を投稿にアップロードしているとき、作成者はメディアアップロードダイアログで他の作成者のアップロードを確認できます。私はこれが起こらないようにしたい。作成者には、メディアアップロードダイアログに自分のアップロードのみを表示してほしい。
これで、これを機能させることができます:
// Prevent Authors from seeing other authors media files
add_filter('parse_query', 'my_parse_query' );
function my_parse_query( $wp_query ) {
// Only applicable for Media Library && Media Upload Dialog
if (! preg_match('/wp-admin\/(?:upload|media-upload|admin-ajax).php/', $_SERVER['REQUEST_URI']) ) {
return;
}
global $current_user;
$user_roles = $current_user->roles;
$user_role = array_shift($user_roles);
if ($user_role && is_string($user_role) && strtolower($user_role)==='author') {
$wp_query->set( 'author', $current_user->id );
}
}
ただし、これにより、カスタムフィールドがユーザープロファイルで機能しなくなります。これは、ACFがadmin-ajaxを使用してフィールドを編集画面に追加するためですが、上記の関数からadmin-ajax部分を削除すると、他の作成者のメディアが再び表示されるようになるため、正方形に戻ります。
私はインターネットから見つけた数十の異なる方法(1)(2)(3)を使用しようとしましたが、新しいWordPress 3.5メディアアップロードダイアログやACFのため、どれも機能しません。
ACFを使用しているときに、作成者が他の作成者のメディアを見るのを防ぐ方法はありますか?