导语:作者希望自定义的角色的用户只能看到自己的图片,不能看到其他用户的图片,但管理员能看到所有用户的图片。作者定义了一个叫做bloger的角色,这个角色可以撰写blog类型的文章。实现代码因为使用add_action:pre_get_posts来实现的,添加的此动作会影响每一次原生态查询,所以定义函数Yct_Restr…

导语:作者希望自定义的角色的用户只能看到自己的图片,不能看到其他用户的图片,但管理员能看到所有用户的图片。作者定义了一个叫做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');
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。