3

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

我有

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

4

1 回答 1

1

只需添加

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

它会起作用的。问候。

于 2017-08-09T08:42:26.607 回答