限制作者从媒体库中挑选,但不能上传媒体

时间:2012-01-19 作者:chris_s

我有一个多站点网络,超级管理员将在其中创建各个站点。出于合规性原因,我们需要启用的一个重要角色是限制“作者”不能上载媒体,但可以访问媒体库,从超级管理员上载的媒体中进行选择。我已经下载了用户角色编辑器插件,这是一个很棒的插件,但它提供的唯一选项是关闭“upload\\u files”功能。这将剥夺访问媒体库的所有能力。没有bueno。

有人想试试这个吗??

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

只是粗略地尝试一下。。。

add_filter(\'media_upload_tabs\', \'modify_media_tabs\');
function modify_media_tabs($tabs) {
    if (is_super_admin()) return $tabs;
    return array(
        \'type_url\' => __(\'From URL\'),
        \'gallery\' => __(\'Gallery\'),
        \'library\' => __(\'Media Library\')
    );
}

add_filter(\'_upload_iframe_src\', \'change_default_media_tab\');
function change_default_media_tab($uri) {
    if (is_super_admin()) return $uri;
    return $uri.\'&tab=library\';
}

add_action(\'current_screen\', \'check_uploading_permissions\');
function check_uploading_permissions() {
    if (is_super_admin()) return;
    if (get_current_screen()->id == \'media-upload\' || (get_current_screen()->action == \'add\' && get_current_screen()->id == \'media\')) {
        $post_id = (int) $_GET[\'post_id\'];
        if (!$post_id || isset($_GET[\'inline\']))
            wp_die(__(\'You do not have permission to upload files.\'));
        if ( !isset($_GET[\'tab\']) || !($_GET[\'tab\'] == \'library\' || $_GET[\'tab\'] == \'type_url\' || $_GET[\'tab\'] == \'gallery\')) {
            wp_redirect( admin_url(\'media-upload.php?tab=library&post_id=\'.$post_id) );
            exit;
        }
    }
}
我们正在做三件事:

从编辑器的弹出式上载程序中删除“我的电脑”选项卡,我们在编辑器的弹出式上载程序中设置默认选项卡“库”,我们拒绝直接访问媒体上载页的权限,我这样做是为了任何不是超级管理员的人,但当然,您可以添加一个用于其他功能的条款。我并没有试着发布一张图片来查看它是否可以绕过,所以如果合规性是你的游戏,你应该这样做。事实上,虽然这可能不言而喻,但我还是要说:

本程序的发布旨在使其有用,但无任何保证;甚至没有针对特定用途的可迁移性或适用性的默示保证。请参见GNU General Public License 了解更多详细信息。

希望这有帮助!

干杯~

结束

相关推荐