代码之家  ›  专栏  ›  技术社区  ›  hlotvonen

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

  •  3
  • hlotvonen  · 技术社区  · 13 年前

    我已经为这个问题挣扎了很长一段时间,但似乎无法解决。

    我有

    • 一个多用户wordpress 3.5网站 Advanced Custom Fields plugin .
    • 自定义发布类型,库,作者可以在其中通过自定义字段发布照片
    • 用户配置文件中的自定义字段。

    当作者将照片上传到帖子中时,作者可以在媒体上传对话框中看到其他作者的上传。我不希望这种情况发生。我希望作者在媒体上传对话框中只看到他们自己上传的内容。

    我可以用这个来工作:

    // 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-aajax部分,它就会再次显示其他作者的媒体,所以它又回到了原点。

    我试过用几十种不同的方法 (1) (2) (3) 我在网上找到的,但由于新的wordpress 3.5媒体上传对话框和/或ACF,它们都不起作用。

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

    1 回复  |  直到 9 年前
        1
  •  1
  •   Tomohide Hirakawa    9 年前

    只需添加

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

    它会起作用的。 当做