我相信默认情况下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\');
最合适的回答,由SO网友:websupporter 整理而成
在基本配置中,用户角色contributor
和subscriber
没有能力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\' );
?>