3

私はこの問題にしばらく苦労してきましたが、うまくいかないようです。

私は持っています

  • 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を使用しているときに、作成者が他の作成者のメディアを見るのを防ぐ方法はありますか?

4

1 に答える 1