问题描述

我想列出只有用户上传的图像的图像。这是场景:

  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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。