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


9

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

  1. 使用iframe在前端使用图片上传器。
  2. upload_files为用户级别的用户添加了上限,希望他们只能看到他们上传的图像。
  3. 我已经找到此问题Q 限制用户仅查看他们已上传的媒体库项目吗?但是接受的答案对我不起作用。

    // 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. 我正在使用图像上传器的前端页面名为“条目”。

  5. 如果我删除了代码if( 'upload.php' != $pagenow ) return;的这一部分,则代码有效。我想我必须改进条件代码的这一部分,但无法弄清楚。有条件的很重要,因为我不希望代码在不需要的其他页面上应用。

因此,我需要帮助来改善我提到的条件部分。谢谢!


1
如果要复制/粘贴代码,请执行以下操作:如果仅将代码包装在函数名称中,请添加适当的空格,以免function与fn内容对齐。
kaiser 2012年

Answers:


5

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

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功能(通常是admin)的用户查看所有图像,其他用户将仅看到他们自己的图像。请注意,可以像$pagenow和一样进行一些改进current_user_can。不是美女,但能胜任


2
理想情况下,您将尝试与wp_upload_dir()结果的某些部分进行比较。
凯撒2012年

2

我通过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;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.