问题描述

我在一个客户端工作,他们想要的功能之一就是他的编辑或作者只能选择现有的图像插入到媒体库的帖子中。

所以看下面的媒体管理器/上传屏幕,是否可以使 Upload Files 选项卡只对 Admin Users 可见,还可以在显示此对话框时使默认显示 Media Library

最佳解决方案

方法 1:

从相应的角色中删除 upload_files 功能。

例如从作者中删除它:

$role = get_role( 'author' );
$role->remove_cap( 'upload_files' );

这被保存到数据库,所以它应该只发生一次,而不是在每个页面加载。从编辑器角色删除它应该是一样的,虽然有明显的修改。删除功能将具有所需的效果,但它可能会产生额外的效果,您可能找不到所需的,唯一的方法是确定是测试

方法 2

考虑这个代码,如果用户没有管理员权限,这将导致上传错误。

<?php
/**
 * Plugin Name: Admin Only Uploads
 * Description: Prevents Uploads from non-Admins
 * Author: TJNowell
 * Author URI: http://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_file 更具体,例如防止图像的上传,只有图像,但允许音频等

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。