Pustaka media untuk membuat daftar gambar yang hanya diunggah pengguna

9

Saya ingin mendaftar gambar hanya untuk gambar yang diunggah pengguna. Berikut ini skenarionya:

  1. Menggunakan pengunggah gambar di ujung depan menggunakan iframe.
  2. Saya telah menambahkan upload_filesbatas ke pengguna tingkat pelanggan dan ingin mereka hanya melihat gambar yang mereka unggah.
  3. Saya menemukan Q ini Membatasi pengguna untuk hanya melihat item perpustakaan media yang telah mereka unggah? tetapi jawaban yang diterima tidak bekerja untuk saya.

    // 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. Halaman depan saya menggunakan pengunggah gambar bernama "Entri".

  5. Jika saya menghapus bagian kode ini if( 'upload.php' != $pagenow ) return;, kode tersebut berfungsi. Saya saya pikir saya harus memperbaiki bagian dari kode kondisional tetapi tidak bisa mengetahuinya. Persyaratan itu penting karena saya tidak ingin kode diterapkan pada halaman lain di mana tidak diperlukan.

Jadi, saya butuh bantuan untuk meningkatkan bagian kondisional seperti yang saya sebutkan. Terima kasih!

Sisir
sumber
1
Jika Anda menyalin / menempel kode, silakan lakukan hal berikut: Jika Anda hanya membungkus kode Anda dengan nama fungsi, silakan tambahkan jumlah spasi yang tepat sehingga functiontidak sejajar dengan konten fn.
kaiser

Jawaban:

5

Ini berfungsi untuk saya untuk membuat daftar item yang diunggah oleh pengguna di perpustakaan media.

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

Ini akan memungkinkan semua pengguna dengan manage_optionskemampuan (biasanya admin) untuk melihat semua gambar, pengguna lain hanya akan melihat gambar mereka sendiri. Perhatikan bahwa beberapa peningkatan dapat dilakukan seperti $pagenowdan current_user_can. Bukan kecantikan tetapi melakukan pekerjaan

pengguna983248
sumber
2
Idealnya Anda akan mencoba membandingkan dengan beberapa bagian dari wp_upload_dir()hasilnya.
kaiser
2

Formulir unggah media yang saya tarik melalui kotak tebal adalah media-upload.php. Jadi, saya harus mengubah syarat menjadi if( 'upload.php' != $pagenow && 'media-upload.php' != $pagenow). Saya lupa melihat ke tempat yang jelas :)

// 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;
}
Sisir
sumber