防止作者在Wordpress 3.5和ACF的媒体上传对话框中看到其他作者的媒体文件


Prevent authors from seeing other authors media files in media upload dialog in Wordpress 3.5 and with ACF

我已经为这个问题挣扎了很长一段时间了,只是似乎不能让它工作。

我有

    一个带有高级自定义字段插件的多用户wordpress 3.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时看到其他作者的媒体吗?

直接添加

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

它会工作的。问候。