允许作者通过媒体按钮上传图像,无需插件

时间:2015-12-05 作者:Ohsik

我相信默认情况下WordPress不会允许作者通过TinyMCE上的媒体按钮上传图像。它会给你You don\'t have permission to attach files to this post. 如果执行此操作,则显示错误消息。

我正在开发一个插件,允许作者从TinyMCE编写和上传图像,并寻找解决方案来授予作者上传图像的权限。

如何在不使用其他插件的情况下实现这一点?

Update

我在我的插件文件中添加了以下代码,不知何故,它让作者通过添加媒体按钮从前端上传图像。然而,我不太清楚它到底做了什么。

我记得看到WP在DB中存储了角色能力数据。我假设下面为Author设置了一个代码保存设置,然后它就可以工作了?

function wh_edit_roles(){
    if ( current_user_can( \'edit_posts\' ) ){
        $user = new WP_User(get_current_user_id());
        $user->add_cap(\'edit_post\');
        $user->add_cap(\'edit_others_pages\');
        $user->add_cap(\'edit_published_pages\');
    }
}
add_action(\'wp_head\', \'wh_edit_roles\');

1 个回复
最合适的回答,由SO网友:websupporter 整理而成

在基本配置中,用户角色contributorsubscriber 没有能力upload_files. 用户角色author 具有此功能。

能力upload_files 为用户提供“媒体”和“媒体>添加新内容”面板。

如果希望其他角色授予此功能,可以使用函数add_cap(). 由于这些更改是写入数据库的,所以在插件激活时使用此功能是有意义的,这样就不会在每次加载页面时都写入数据库(因为您也可以在init 挂钩)。所以你也应该看看register_activation_hook(). 假设您将此代码放在插件的“根”文件中,应该可以:

<?php
    function wpse210884_add_upload_files_cap() {
        $role = get_role( \'contributor\' ); //The role you want to grant the capability
        $role->add_cap( \'upload_files\' );
    }

    register_activation_hook( __FILE__, \'wpse210884_add_upload_files_cap\' );
?>

相关推荐

Organizing media uploads

我的一个客户想把他的WordPress网站转移到我的服务器上。问题是他的网站没有在他的上传文件夹中使用子文件夹,而他上传文件夹的根目录中有超过1000000个文件。有没有一种方法可以将他的所有帖子上传到文件夹中,而不会丢失帖子中的附加链接和特色图片?