7

登録ユーザーがフロントエンドで wp_editor() を介して独自の投稿を作成できる wordpress サイトを作成していますが、投稿は 1 つだけです。

ここで、ユーザーがアップロードしたメディアのみを表示できるように制限したいと思います。バックエンドで動作する functions.php で次のスクリプトを使用します。したがって、ユーザーがバックエンドのメディア セクションに移動すると、アップロードされたメディアのみが表示されます。

しかし、ユーザーがフロントエンドの wp_editor で「メディアの挿入」ポップアップを開くと、すべてのユーザーからアップロードされたメディアを表示できます。

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' );

この煩わしさを解決するための熱いアイデアはありますか? ありがとうございました!

4

3 に答える 3

12

このプラグインを試すことができます: http://wordpress.org/extend/plugins/view-own-posts-media-only/

または、これを試してください:

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;
}

ソース: http://wpsnipp.com/index.php/functions-php/restricting-users-to-view-only-media-library-items-they-upload/#comment-810649773

于 2013-03-15T14:15:05.833 に答える
6

または、 WordPress 3.7以降

add_filter( 'ajax_query_attachments_args', "user_restrict_media_library" );
function user_restrict_media_library(  $query ) {
    global $current_user;
    $query['author'] = $current_user->ID ;
    return $query;
}
于 2014-02-11T19:12:06.283 に答える