仅列出用户上传的图像的媒体库

时间:2012-05-06 作者:Sisir

我只想为用户上传的图像列出图像。以下是场景:

使用iframe在前端使用图像上载程序upload_files 限制订阅者级别的用户,并希望他们只看到上载的图像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;
}
我使用的图像上传器的前端页面名为“Entry”。

如果我删除这部分代码if( \'upload.php\' != $pagenow ) return; 代码起作用。我认为我必须改进条件代码的这一部分,但我无法理解它。条件很重要,因为我不希望代码应用于其他不需要的页面

2 个回复
最合适的回答,由SO网友:Sisir 整理而成

我通过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;
}

SO网友:user983248

这对我来说很有用,可以列出用户在媒体库上上载的项目。

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. 虽然不是美女,但它很管用

结束

相关推荐

MEDIA_SIDELOAD_IMAGE文件名?

我正在使用media\\u sideload\\u image从web下载图像并存储它们。然而,问题是youtube上的图片总是被称为“hqdefault.jpg”,这意味着它将覆盖现有的图片。有三种方法可以解决此问题:如何更改附件结构,使其包含postname?(当前:http://example.com/wp-content/uploads/2011/10/hqdefault-40x40.jpg)</如何将附件的文件名设置为postname,从而防止重写</如何设置现有附件缩略图的新文件名