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

Php 防止作者在Wordpress 3.5和ACF的“媒体上载”对话框中看到其他作者的媒体文件,php,plugins,custom-fields,media-library,wordpress-3.5,Php,Plugins,Custom Fields,Media Library,Wordpress 3.5,我已经为这个问题挣扎了很长一段时间,但似乎无法让它工作 我有 一个多用户wordpress 3.5网站 自定义发布类型gallery,作者可以在其中通过自定义字段发布照片 用户配置文件中的自定义字段 当作者将照片上传到帖子中时,作者可以在“媒体上传”对话框中查看其他作者的上传。我不想发生这种事。我希望作者在“媒体上载”对话框中只查看自己的上载 我可以用这个让它工作: // Prevent Authors from seeing other authors media files add_f

我已经为这个问题挣扎了很长一段时间,但似乎无法让它工作

我有

  • 一个多用户wordpress 3.5网站
  • 自定义发布类型gallery,作者可以在其中通过自定义字段发布照片
  • 用户配置文件中的自定义字段
当作者将照片上传到帖子中时,作者可以在“媒体上传”对话框中查看其他作者的上传。我不想发生这种事。我希望作者在“媒体上载”对话框中只查看自己的上载

我可以用这个让它工作:

// 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部分,它将再次开始显示其他作者的媒体,因此它又回到了原点

我曾尝试使用从互联网上找到的几十种不同的方法,但由于新的wordpress 3.5媒体上传对话框和/或ACF,这些方法都不起作用

您知道如何防止作者在使用ACF时看到其他作者的媒体吗?

只需添加

if($wp_query->query_vars['post_type']!=='attachment'){return;}
它会起作用的。
注意。

我找到了以下解决方案,请看一看:我使用了第二个最佳答案中提供的代码。