我有一个网站,有1名管理员、11名编辑和4000多名作者。我需要防止作者将媒体添加到服务器并耗尽所有存储空间。
起初我试过
function removemediabuttons()
{
if($user->wp_user_level >= 1) {
remove_action( \'media_buttons\', \'media_buttons\' );
global $menu;
unset($menu[10]);
}
}
add_action(\'admin_head\',\'removemediabuttons\');
这确实删除了非管理员的添加媒体按钮,但管理员侧栏菜单的unset()方法没有任何效果,我假设任何了解WordPress的作者都可以简单地输入媒体库URL并使用它。
所以我用
$wp_roles->remove_cap( \'author\', \'upload_files\' );
但这(正确地)删除了作者角色的使用权限
WP User Avatar 对于用户来说,不要被迫使用Gravatar,并且能够在严格的本地基础上更改他们的头像,这一点非常重要。
是否可以仅为一个模块添加\\u cap()?
UPDATE 2015-12-21根据bueltge的建议,我更改了代码以检查中的配置文件get_current_screen()
. 这肯定会在概要文件中启用UI,但在上载时。php UI再次检查上传,但被拒绝。本例中的检查源自/wp admin/includes/ajax操作。php,所以不是插件本身进行上传(而且正确地说)。
global $wp_roles;
$wp_roles->remove_cap( \'author\', \'upload_files\' );
add_action( \'current_screen\', \'allowAvatarUploads\' );
function allowAvatarUploads() {
$currentScreen = get_current_screen();
global $wp_roles;
if( $currentScreen->id === "profile" ) {
$wp_roles->add_cap( \'author\', \'upload_files\' );
// keep their menu consistent
remove_menu_page(\'upload.php\');
} else {
}
}