WordPress自定义角色的用户只能看到自己上传的图片

发布时间:2018-05-26 22:43:04

导语:作者希望自定义的角色的用户只能看到自己的图片,不能看到其他用户的图片,但管理员能看到所有用户的图片。作者定义了一个叫做bloger的角色,这个角色可以撰写blog类型的文章。

实现代码

因为使用add_action:pre_get_posts来实现的,添加的此动作会影响每一次原生态查询,所以定义函数Yct_Restrict_Media_library里面的执行条件应该选择严格一些,尽量减少影响。

先判断是不是在管理员后台,同时用户是不是已经登录。

再判断是不是WordPress用户类,!is_a($current_user, ‘WP_User’)。

随后判断是不是在媒体库的页面,’admin-ajax.php’ != $pagenow。

最后判断是不是bloger角色的用户。

如果条件都符合,那么添加一个查询条件:为本次查询记录指定作者。

/**
 * 如果bloger角色,只能看到自己的上传图片。bloger角色没有管理媒体库的权限,只有上传的权限。
 * bloger角色和作者角色类似。
 * 
 * @param array $wp_query_obj 
 * 
 * @return void
 */
function Yct_Restrict_Media_library($wp_query_obj) 
{
    global $current_user, $pagenow;
    if (is_admin() && is_user_logged_in()) {
        //判断当前用户是否是WordPress用户类,不是返回
        if (!is_a($current_user, 'WP_User')) {
            return;
        }
        //判断是否是图片AJAX页,
        if ('admin-ajax.php' != $pagenow || $_REQUEST['action'] != 'query-attachments') {
            return;
        }
        //如果当前用户的角色是bloger,则增加查询条件:author字段等于当前用户的ID
        if (in_array('bloger', $current_user->roles)) {      
            $wp_query_obj->set('author', $current_user->ID);
        }
    }
     return;
}
add_action('pre_get_posts', 'Yct_Restrict_Media_library');
小兽wordpress凭借多年的wordpress企业主题制作经验,坚持以“为用户而生的wordpress主题”为宗旨,累计为2000多家客户提供品质wordpress建站服务,得到了客户的一致好评。我们一直用心对待每一个客户,我们坚信:“善待客户,将会成为终身客户”。小兽wordpress能坚持多年,是因为我们一直诚信。我们明码标价(wordpress做网站需要多少钱),从不忽悠任何客户,我们的报价宗旨:“拒绝暴利,只保留合理的利润”。如果您有网站建设、网站改版、网站维护等方面的需求,请立即咨询右侧在线客服或拨打咨询热线:18907337671,我们会详细为你一一解答你心中的疑难。

相关文章

写给所有做网站的朋友的一封信

写给所有做网站的朋友的一封信

现在就开始执行“1+N”营销推广和没有开始执行的人,一两天看不出任何区别; 一两个月看来差异也是微乎其微的;但在2-5年的长远时间来看的时候,你的高质 量询盘不断增加,你的互联网资产已经建立完成,对手已经很难匹敌,现在你看到这段文字的时候就是最好的开始,现在就是最好的时候,马上开始“1+N”体系的整体营销推广吧,我们和你一起,开创互联网营销大未来!

点击查看详情

准备开启WordPress网站建设推广?

我们相信高端漂亮的网站不应该是昂贵的,这就是wordpress对每个人都是免费的原因
wordpress建站免费入门,并提供价格合理的wordpress建站套餐。