wordpress仅显示媒体用户已在wp_编辑器中上载

wordpress仅显示媒体用户已在wp_编辑器中上载,wordpress,view,media,restrictions,Wordpress,View,Media,Restrictions,我正在创建一个wordpress网站,注册用户可以通过前端的wp_editor()创建自己的帖子,但只需一篇帖子 现在我想限制用户只能看到他上传的媒体。我在functions.php中使用以下脚本,它在后端工作。因此,如果用户转到后端的媒体部分,他将只看到上传的媒体 但如果用户进入前端wp_编辑器上的“插入媒体”弹出窗口,他仍然可以看到所有用户上传的媒体 function restricted_media_view( $wp_query ) { if ( strpos( $_SERVER[ 'R

我正在创建一个wordpress网站,注册用户可以通过前端的wp_editor()创建自己的帖子,但只需一篇帖子

现在我想限制用户只能看到他上传的媒体。我在functions.php中使用以下脚本,它在后端工作。因此,如果用户转到后端的媒体部分,他将只看到上传的媒体

但如果用户进入前端wp_编辑器上的“插入媒体”弹出窗口,他仍然可以看到所有用户上传的媒体

function restricted_media_view( $wp_query ) {
if ( strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/upload.php' ) !== false  
|| strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit.php' ) !== false ) {
    if ( !current_user_can( 'level_5' ) ) {
        global $current_user;
        $wp_query->set( 'author', $current_user->id );
    }
    }
}
add_filter('parse_query', 'restricted_media_view' );

你有什么办法解决这个烦恼吗?谢谢大家!

您可以尝试此插件:

或者尝试以下方法:

add_action('pre_get_posts','ml_restrict_media_library');

function ml_restrict_media_library( $wp_query_obj ) {
    global $current_user, $pagenow;
    if( !is_a( $current_user, 'WP_User') )
    return;
    if( 'admin-ajax.php' != $pagenow || $_REQUEST['action'] != 'query-attachments' )
    return;
    if( !current_user_can('manage_media_library') )
    $wp_query_obj->set('author', $current_user->ID );
    return;
}
来源:

或者自


我为WP 4.3.1和works使用API/Filter Reference/ajax查询附件参数

add_filter( 'ajax_query_attachments_args', 'show_current_user_attachments', 10, 1 );

function show_current_user_attachments( $query = array() ) {
    $user_id = get_current_user_id();
    if( $user_id ) {
        $query['author'] = $user_id;
    }
    return $query;
}
只需添加functions.php


或者查看此链接

谢谢,这真的很难找到!现在,文档中提供了一种稍有不同的方法:
add_filter( 'ajax_query_attachments_args', 'show_current_user_attachments', 10, 1 );

function show_current_user_attachments( $query = array() ) {
    $user_id = get_current_user_id();
    if( $user_id ) {
        $query['author'] = $user_id;
    }
    return $query;
}