Saya ingin pengguna dapat mengunggah foto menggunakan add_cap('upload_files')
tetapi di halaman profil mereka, Perpustakaan Media menunjukkan setiap gambar yang telah diunggah. Bagaimana saya bisa memfilternya sehingga mereka hanya bisa melihat gambar yang mereka unggah?
Inilah solusi saya untuk saat ini ... Saya sedang melakukan permintaan WP sederhana, kemudian loop pada halaman "Profil" pengguna
$querystr = " SELECT wposts.post_date,wposts.post_content,wposts.post_title, guid
FROM $wpdb->posts wposts
WHERE wposts.post_author = $author
AND wposts.post_type = 'attachment'
ORDER BY wposts.post_date DESC";
$pageposts = $wpdb->get_results($querystr, OBJECT);
Jawaban:
Anda selalu bisa memfilter daftar media menggunakan
pre_get_posts
filter yang pertama menentukan halaman, dan kemampuan pengguna, dan menetapkan parameter penulis ketika kondisi tertentu terpenuhi ..Contoh
Saya menggunakan topi hapus halaman sebagai syarat sehingga Admin dan Editor masih melihat daftar media lengkap.
Ada satu efek samping kecil, yang saya tidak dapat melihat kaitannya, dan itu dengan jumlah lampiran yang ditunjukkan di atas daftar media (yang masih akan menunjukkan jumlah total item media, bukan jumlah pengguna yang diberikan - saya akan anggap ini masalah kecil).
Kupikir aku akan memposting semuanya, mungkin berguna ..;)
sumber
Pada WP 3.7 ada cara yang jauh lebih baik melalui
ajax_query_attachments_args
filter, seperti yang disediakan dalam dokumentasi :sumber
Inilah solusi lengkap untuk posting dan media (kode ini khusus untuk penulis, tetapi Anda dapat mengubahnya untuk peran pengguna apa pun). Ini juga memperbaiki jumlah post / media tanpa meretas file inti.
sumber
$_num_posts = array();
Ini adalah versi modifikasi dari jawaban yang diterima . Karena jawaban yang diterima hanya menargetkan item menu Media di sebelah kiri, pengguna masih dapat melihat seluruh perpustakaan media dalam kotak modal ketika mengunggah foto ke sebuah posting. Kode yang sedikit dimodifikasi ini memperbaiki situasi itu. Pengguna yang ditargetkan hanya akan melihat item media mereka sendiri dari tab Media Library di kotak modal yang muncul di dalam sebuah posting.
Ini adalah kode dari jawaban yang diterima dengan komentar yang menandai baris yang akan diedit ...
Bagi pengguna untuk hanya melihat medianya sendiri dari menu Media DAN tab Perpustakaan Media dari modal unggah, ganti baris yang ditunjukkan dengan ini ...
( garis-jeda & spasi hanya disisipkan untuk dibaca di sini )
Berikut ini sama dengan di atas tetapi juga membatasi mereka untuk melihat posting mereka sendiri dari item menu Posts.
( garis-jeda & spasi hanya disisipkan untuk dibaca di sini )
Catatan : seperti pada jawaban yang diterima, kiriman dan penghitung media akan salah. Namun, ada solusi untuk ini dalam beberapa jawaban lain di halaman ini. Saya tidak memasukkannya hanya karena saya belum mengujinya.
sumber
Kode kerja lengkap .. Satu-satunya masalah adalah, salah menghitung gambar di perpustakaan media di halaman Tambahkan Posting.
sumber
media-upload.php
, kode Anda tidak berfungsi dari modal unggah yang dihasilkan oleh halaman Edit Posting. Masih bisa melihat semua item perpustakaan.t31os memiliki solusi hebat di sana. Satu-satunya hal adalah bahwa jumlah semua posting masih muncul.
Saya menemukan cara agar jumlah hitungan tidak muncul menggunakan jQuery.
Cukup tambahkan ini ke file fungsi Anda.
Ini bekerja untuk saya!
sumber
Saya memecahkan masalah saya dengan solusi yang cukup kasar, tetapi bisa diterapkan.
1) Saya menginstal plugin WP Hide Dashboard, sehingga Pengguna hanya akan melihat tautan ke formulir edit profil mereka.
2) Dalam file template author.php, saya memasukkan kode yang saya gunakan di atas.
3) Kemudian, untuk pengguna yang masuk, saya menampilkan tautan langsung ke halaman Unggah "wp-admin / media-new.php"
4) Masalah berikutnya yang saya perhatikan, adalah setelah mereka mengunggah foto, itu akan mengarahkan mereka untuk mengunggah.php ... dan mereka bisa melihat semua gambar lainnya. Saya belum menemukan kait ke halaman media-new.php, jadi saya akhirnya meretas inti "media-upload.php" dan mengarahkan mereka ke halaman profil mereka:
Lalu diganti
wp_redirect( admin_url($location) );
denganwp_redirect($userredirect);
Beberapa masalah. Pertama, pengguna yang masuk masih bisa masuk ke "upload.php", jika mereka tahu itu ada. Mereka tidak dapat melakukan apa pun kecuali MELIHAT file, dan 99% orang bahkan tidak akan tahu tentang hal itu, tetapi masih belum optimal. Kedua, itu juga mengarahkan Admin ke halaman profil setelah mengunggah. Ini dapat memiliki perbaikan yang cukup sederhana dengan memeriksa peran pengguna, dan hanya mengarahkan Pelanggan.
Jika ada yang punya ide tentang menghubungkan ke halaman Media tanpa masuk ke file inti, saya akan menghargainya. Terima kasih!
sumber
admin_init
kait yang berjalan di setiap permintaan admin. Seandainya pengguna meminta upload.php dan Anda ingin mencegahnya, Anda bisa memblokir permintaan itu (mis.wp_die('Access Denied')
) Atau mengalihkan ke beberapa tempat yang sah per kait.Simpan kode di atas sebagai manage_your_media_only.php, zip, unggah sebagai plugin ke WP Anda dan aktifkan, itu saja.
sumber
Salah satu cara untuk melakukan ini adalah dengan menggunakan plugin Role Scoper , ini sangat bagus untuk mengelola peran dan kemampuan yang sangat spesifik. Anda sebenarnya dapat mengunci akses ke gambar di Perpustakaan Media hanya untuk yang diunggah oleh setiap pengguna. Saya telah menggunakannya untuk proyek yang sedang saya kerjakan saat ini dan berfungsi dengan baik.
sumber