2013-03-15 14 views
6

Tôi đang tạo một trang wordpress nơi người dùng đã đăng ký có khả năng tạo bài đăng của riêng mình qua wp_editor() trên giao diện người dùng, nhưng chỉ một bài đăng.wordpress hiển thị chỉ người dùng phương tiện đã tải lên trong wp_editor

Bây giờ tôi muốn hạn chế người dùng chỉ có thể xem phương tiện được tải lên của anh ấy. Tôi sử dụng đoạn mã sau trong hàm functions.php, nó hoạt động trong backend. Vì vậy, nếu người dùng truy cập phần phương tiện trong chương trình phụ trợ, anh ấy sẽ chỉ nhìn thấy phương tiện được tải lên của anh ấy.

Nhưng nếu người dùng chuyển sang cửa sổ bật "chèn phương tiện" trên giao diện người dùng, bạn vẫn có thể xem phương tiện được tải lên từ tất cả người dùng.

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

Bạn có ý tưởng nóng nào để giải quyết phiền toái này không? Cảm ơn bạn!

Trả lời

11

Bạn có thể thử plugin này: http://wordpress.org/extend/plugins/view-own-posts-media-only/

Ngoài ra thử điều này:

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

Nguồn: http://wpsnipp.com/index.php/functions-php/restricting-users-to-view-only-media-library-items-they-upload/#comment-810649773

+0

Cảm ơn bạn !! Plugin này dường như làm điều đó cho tôi! :) – Sebsemillia

+0

Tuyệt vời. Vui vì nó hoạt động. –

+0

Cảm ơn bạn, điều này thực sự khó để thử và tìm! –

6

cách khác kể từ 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; 
} 
+1

Điều này cũng hoạt động tốt cho tôi trên 3,8, cảm ơn :) –

+1

Một phương pháp hơi khác nhau hiện được cung cấp trong tài liệu: http://codex.wordpress.org/Plugin_API/Filter_Reference/ajax_query_attachments_args#Examples – David

1

tôi sử dụng API/Lọc Reference/truy vấn đính kèm ajax ents args cho WP 4.3.1 và các công trình

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

chỉ cần thêm vào functions.php

hoặc kiểm tra liên kết này WP Codex

Các vấn đề liên quan