将WordPress媒体库限制为特定用户角色(用户只能查看/选择自己的媒体)

时间:2021-11-07 作者:Samuel

我的平台中有4个角色:管理员、作者、编辑、外部

我需要将WordPress媒体库访问权限限制为仅针对一个用户角色的用户自己上传(external) 在我的平台上。The External user role can only see/select his own media.

所有其他角色仍然可以访问库中的所有媒体。

我找到了以下代码片段,但它适用于所有用户:

<?php // Limit access to media library (users can only see/select own media) //
   add_filter( \'ajax_query_attachments_args\', \'wpsnippet_show_current_user_attachments\' );
   function wpsnippet_show_current_user_attachments( $query ) {
      $user_id = get_current_user_id();
      if ( $user_id && !current_user_can(\'activate_plugins\') && !current_user_can(\'edit_others_posts\')) {
         $query[\'author\'] = $user_id;
      }
      return $query;
   }
?>
提前感谢您的回复。

2 个回复
SO网友:tiago calado

将此添加到您的函数中。php或在代码片段中,使用此代码,角色为external的用户只能看到自己的上载,其他任何角色都可以看到他们之前的上载。

add_filter( \'ajax_query_attachments_args\', \'role_external\' );
function role_external( $query ) {
    $user_id = get_current_user_id();
    if ( $user_id && current_user_can(\'external\') ) {
        $query[\'author\'] = $user_id;
    }
    return $query;
}

SO网友:tiago calado

要保护您的图像文件夹,请尝试使用此

添加一个简单的。htaccess文件位于站点文件夹中,包含以下行

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://www\\.your-domain\\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www\\.your-domain\\.com$ [NC]
RewriteRule .*\\.(wav|swf|jpg|jpeg|gif|png|bmp|js|css)$ - [F,NC,L]
注意,我还添加了js和css文件,即使我认为找到试图刮伤它们的人很奇怪。

可以找到这个答案here