問題描述

我想列出只有用户上傳的圖像的圖像。這是場景:

  1. 使用 iframe 在前端使用圖像上傳器。

  2. 我已經將 upload_files 帽添加到用户級用户,並希望他們只看到他們上傳的圖像。

  3. 我發現這個 Q Restricting users to view only media library items they have uploaded?,但接受的答案對我沒有用。

    // Code originally by @t31os
    add_action('pre_get_posts','users_own_attachments');
    
    function users_own_attachments( $wp_query_obj )
    {
        global $current_user, $pagenow;
    
        if( !is_a( $current_user, 'WP_User') )
            return;
    
        if( 'upload.php' != $pagenow )
            return;
    
        if( !current_user_can('delete_pages') )
            $wp_query_obj->set('author', $current_user->id );
    
        return;
    }
    
  4. 我使用圖像上傳器的前端頁面命名為”Entry” 。

  5. 如果我刪除這部分代碼 if( 'upload.php' != $pagenow ) return; 代碼工作。我想我必須改進這部分條件代碼,但是無法弄清楚。條件是重要的,因為我不希望代碼適用於不需要的其他頁面。

所以,我需要幫助來改善條件部分,如我所説。謝謝!

最佳解決方案

這對我來説是為了列出用户在媒體庫上上傳的項目。

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

它將允許具有 manage_options 功能的所有用户 (通常為管理員) 查看所有圖像,其他用户將只會看到自己的圖像。請注意,可以像 $pagenowcurrent_user_can 一些改進。不是一個美麗,但它做的工作

次佳解決方案

我通過 thickbox 提取的媒體上傳表單是 media-upload.php 。所以我不得不把條件改成 if( 'upload.php' != $pagenow && 'media-upload.php' != $pagenow)。我忘了看看這個明顯的地方:)

// Code originally by @t31os
add_action('pre_get_posts','users_own_attachments');

function users_own_attachments( $wp_query_obj )
{
    global $current_user, $pagenow;

    if( !is_a( $current_user, 'WP_User') )
        return;

    if( 'upload.php' != $pagenow && 'media-upload.php' != $pagenow)
        return;

    if( !current_user_can('delete_pages') )
        $wp_query_obj->set('author', $current_user->id );

    return;
}

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。