首页 > 解决方案 > 允许“订阅者”上传媒体文件 - “抱歉,您不能将文件附加到此帖子。”

问题描述

我正在使用 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');        
}

不幸的是,这仍然不起作用,出现同样的错误。有什么想法为什么这不起作用以及使这项工作需要哪些角色?还有其他方法可以解决这个问题吗?

我的另一个想法是给他们“贡献者”角色,然后确保他们无法访问后端,但这似乎比只允许“订阅者”上传媒体文件更复杂。

标签: wordpress

解决方案


我刚刚遇到了同样的问题并看到了这个。通过添加“编辑已发布的页面”解决了我的问题:

//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');
}

推荐阅读