禁止向非管理员用户上载媒体

时间:2013-05-13 作者:JasonDavis

我在一个客户网站上工作,他们想要的功能之一就是为他的EditorsAuthors 只能从媒体库中选择要插入帖子的现有图像。

因此,看看下面的媒体管理器/上载屏幕,是否可以Upload Files 选项卡仅对可见Admin Users 也要使Media Library 显示此对话框时默认显示?

enter image description here

1 个回复
SO网友:Tom J Nowell

以下是两种方法:

方法1:

移除upload_files 各角色的能力。

e、 g.从作者处删除:

$role = get_role( \'author\' );
$role->remove_cap( \'upload_files\' );
这会保存到数据库中,因此只会发生一次,而不是每次加载页面时。从编辑器角色中删除它应该是相同的,尽管有明显的修改。

删除该功能将获得所需的效果,但可能会产生其他效果,您可能觉得不太理想,唯一可以确保的方法是测试

方法2考虑此代码。它使用wp_handle_upload_prefilter 筛选以检查用户是否具有管理员状态,如果没有,则中止上载。它只依赖于管理员及以上拥有manage_options.

<?php
/**
 * Plugin Name: Admin Only Uploads
 * Description: Prevents Uploads from non-admins
 * Author: TJNowell
 * Author URI: https://tomjn.com
 * Version: 1.0
 */

function tomjn_only_upload_for_admin( $file ) {
    if ( ! current_user_can( \'manage_options\' ) ) {
        $file[\'error\'] = \'You can\\\'t upload images without admin privileges!\';
    }
    return $file;
}
add_filter( \'wp_handle_upload_prefilter\', \'tomjn_only_upload_for_admin\' );
您可以使用此筛选器使其比upload\\u文件更具体,例如,阻止上载图像,仅上载图像,但允许音频等

结束