为何限制作者对媒体上传的访问?
在多作者WordPress博客中,不同作者可能会上传各类图片。这使得作者难以找到正确的图片,甚至可能错误地删除或编辑他人的媒体文件。这会导致生产力下降、附加工作量增加以及给站点管理员和编辑带来额外负担。
这样的无限访问也可能引发隐私问题。例如,在筹备新产品或博客文章时,其他作者会在你宣布前看到机密图片。如果你有一个WordPress会员站点,贡献者甚至可能通过媒体库访问到付费媒体文件。
如何使用WPCode按用户整理媒体上传
我们曾找到一个插件,阻止没有编辑权限的用户访问他人的媒体文件。尽管该插件好用,但已不再更新。此外,该插件存在限制,只能阻止没有edit_others_posts权限的用户(如站点管理员和编辑)访问他人文件。
如需限制所有用户(除你自己外)访问他人媒体文件,可以为WordPress博客添加自定义代码。我们会展示两段代码:一段限制非管理员用户的媒体访问,另一段限制无edit_others_posts权限用户。
通常,指南会建议你向WordPress主题添加代码,但我们不推荐这样做,因为代码中的简单错误可能导致WordPress错误或网站崩溃。因此,我们推荐使用WPCode。
WPCode简介
WPCode是超过一百万个WordPress网站使用的最佳代码片段插件,能轻松添加自定义代码而无需编辑functions.php文件。
步骤
首先安装并激活免费的WPCode插件。然后,进入Code Snippets » Add Snippet。在这里,你会看到可以添加到网站上的预制代码片段。只需将鼠标悬停在‘Add Your Custom Code’上,然后选择‘Use snippet’。
为自定义代码片段输入标题,然后在‘Code Type’下拉菜单中选择‘PHP Snippet’。
在‘Code Preview’区域,你可以粘贴以下代码片段:
选项1:限制非管理员WordPress用户访问媒体文件
add_filter('ajax_query_attachments_args', 'user_show_attachments'); function user_show_attachments($query) { $user_id = get_current_user_id(); if ($user_id && !current_user_can('administrator')) { $query['author'] = $user_id; } return $query; }
该代码会检查当前用户是否非管理员。如果不是管理员,它会将媒体库限制为只显示用户自己上传的文件。
选项2:限制无文章编辑权限的WordPress用户访问媒体文件
add_filter('ajax_query_attachments_args', 'user_show_attachments'); function user_show_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; }
这一代码更为具体。它检查当前用户是否登录且无激活插件或编辑他人文章权限。如果符合这些条件,用户只能看到并管理自己上传的文件。
接下来,滚动到‘Insertion’部分。WPCode可以将代码添加到不同位置。要在整个WordPress网站上使用PHP代码,请选择‘Auto Insert’,然后选择‘Run Everywhere’。
设置完成后,滚动到顶部,将‘Inactive’切换为‘Active’,最后点击‘Save Snippet’使代码生效。
现在,用户将仅能够访问他们在WordPress媒体库上传的文件。
了解更多管理WordPress文件的方法
除了在WordPress中限制媒体上传之外,你可能还想查看以下指南以更好管理文件:
- 如何在WordPress中重命名图片和媒体文件
- WordPress最佳Dropbox插件(专家选择)
- 如何在WordPress中创建额外的图片尺寸
- 如何强制执行WordPress中的清洁图片文件名(简单方法)
- 如何清理你的WordPress媒体库
- 如何更改WordPress的默认媒体上传位置