wordpress - 允许“订阅者”上传媒体文件 - “抱歉,您不能将文件附加到此帖子。”
问题描述
我正在使用 Wordpress 插件“用户提交的帖子”来允许某些用户从前端写帖子。
我不希望他们在后端看到其他帖子,我希望他们拥有尽可能少的访问权限。因此,我希望他们只是“订阅者”。
我现在唯一的问题是“订阅者”不允许上传文件,因此“添加媒体”按钮不可见。我通过添加以下代码解决了这个问题:
if ( current_user_can('subscriber') && !current_user_can('upload_files') )
add_action('admin_init', 'allow_subscriber_uploads');
function allow_subscriber_uploads() {
$subscriber = get_role('subscriber');
$subscriber->add_cap('upload_files');
}
有了这个代码,“添加媒体”按钮就在那里,“订阅者”可以访问媒体库(这很好),并且不允许他删除其他文件(也很好)。
但是,当我尝试使用“订阅者”用户在前端编辑器中上传文件时,会出现以下错误:“对不起,您不允许将文件附加到此帖子。”。
我已经尝试添加更多这样的角色:
if ( current_user_can('subscriber') && !current_user_can('upload_files') )
add_action('admin_init', 'allow_subscriber_uploads');
function allow_subscriber_uploads() {
$subscriber = get_role('subscriber');
$subscriber->add_cap('upload_files');
$subscriber->add_cap('edit_attachments');
$subscriber->add_cap('edit_posts');
$subscriber->add_cap('edit_published_pages');
$subscriber->add_cap('edit_others_pages');
$subscriber->add_cap('edit_others_posts');
$subscriber->add_cap('level_0');
$subscriber->add_cap('level_1');
}
不幸的是,这仍然不起作用,出现同样的错误。有什么想法为什么这不起作用以及使这项工作需要哪些角色?还有其他方法可以解决这个问题吗?
我的另一个想法是给他们“贡献者”角色,然后确保他们无法访问后端,但这似乎比只允许“订阅者”上传媒体文件更复杂。
解决方案
我刚刚遇到了同样的问题并看到了这个。通过添加“编辑已发布的页面”解决了我的问题:
//Let Subscriber Role to Upload Media
if ( current_user_can('subscriber') && !current_user_can('upload_files') )
add_action('admin_init', 'allow_subscriber_uploads');
function allow_contributor_uploads() {
$subscriber = get_role('subscriber');
$subscriber->add_cap('upload_files');
$subscriber->add_cap('edit_published_pages');
}
推荐阅读
- php - 如何在 addRoute 语法中实现 foreach 循环?
- java - 如何从多行 EditText 获取字符串文本
- angular - ngFor 没有在 Angular 中实时更新列表值
- java - 创建名为“sessionfactory”的 bean 时出错 (java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException)
- javascript - 是否有在数组中查找 json 对象的当前索引的函数?
- php - 页面没有在php中重定向到自我
- reactjs - 如何通过 withRouter 为注入的属性指定类型(typeScript)?
- database - 休眠关系问题
- java - RegEx 用于检查字符串中是否存在大写字母
- css - 如何在不使用引导程序中的 css 的情况下向 div 添加填充?