Domyślnie WordPress umożliwia autorom wyświetlanie wszystkich obrazków w bibliotece multimediów twojej witryny. Może to być problematyczne, jeśli zapraszasz wielu autorów gościnnych. W tym artykule pokażemy, jak ograniczyć dostęp do biblioteki multimediów WordPress do własnych plików przesłanych przez użytkownika.
Dlaczego warto ograniczyć dostęp do biblioteki multimediów do własnych plików użytkownika?
WordPress pozwala autorom zobaczyć wszystkie pliki w bibliotece multimediów. Mogą oni również zobaczyć obrazki przesłane przez administratora, redaktora lub innych autorów.
Aby dowiedzieć się więcej, zobacz nasz artykuł na temat ról i uprawnień użytkowników WordPress.
Załóżmy, że tworzysz nowy wpis, aby ogłosić nadchodzący produkt lub ofertę. Autorzy i autorzy gościnni na twojej witrynie internetowej będą mogli zobaczyć obrazki przesłane do tego artykułu w bibliotece multimediów.
Twoje zdjęcia będą również widoczne w wyskakującym okienku „Dodaj media”, które użytkownicy widzą podczas dodawania obrazków do własnych artykułów.
Dla wielu witryn internetowych może to nie mieć większego znaczenia. Jeśli jednak prowadzisz witrynę internetową z wieloma autorami, możesz chcieć to zmienić.
Przyjrzyjmy się, jak łatwo ograniczyć dostęp do multimediów do własnych plików użytkownika.
Metoda 1: Ograniczenie dostępu do biblioteki multimediów za pomocą wtyczki
Ta metoda jest łatwiejsza i zalecana dla wszystkich użytkowników.
Pierwszą rzeczą, którą musisz zrobić, to zainstalować i włączyć wtyczkę Restrict Media Library Access. Aby uzyskać więcej informacji, zobacz nasz przewodnik krok po kroku, jak zainstalować wtyczkę WordPress.
Ta wtyczka działa po wyjęciu z pudełka i nie ma żadnych ustawień do skonfigurowania.
Po włączaniu filtruje zapytanie o multimedia, aby sprawdzić, czy obecny użytkownik jest administratorem lub edytorem. Jeśli rola użytkownika nie jest zgodna z żadną z tych ról, wyświetlane będą tylko własne pliki przesłane przez użytkownika.
Użytkownicy z rolą administratora lub redaktora będą mogli zobaczyć wszystkie przesłane multimedia w zwykły sposób.
Metoda 2: Ręczne ograniczenie dostępu do multimediów
Pierwsza metoda sprawdzi się w przypadku większości witryn internetowych, ponieważ ogranicza dostęp do biblioteki multimediów i pozwala tylko administratorowi i redaktorowi zobaczyć wszystkie przesłane multimedia.
Jeśli jednak chcesz dodać własną rolę użytkownika lub po prostu nie chcesz używać wtyczki, możesz wypróbować tę metodę. Wykorzystuje ona ten sam kod używany przez wtyczkę, ale będziesz mógł go zmodyfikować tak, aby spełniał twoje potrzeby.
Ta metoda wymaga dodania kodu do twoich plików WordPress. Jeśli nie robiłeś tego wcześniej, zapoznaj się z naszym przewodnikiem na temat kopiowania i wklejania kodu w WordPress.
Będziesz musiał dodać następujący kod do twojego pliku functions.php WordPressa lub wtyczki specyficznej dla witryny.
// Limit media library access add_filter( 'ajax_query_attachments_args', 'wpb_show_current_user_attachments' ); function wpb_show_current_user_attachments( $query ) { $user_id = get_current_user_id(); if ( $user_id && !current_user_can('activate_plugins') && !current_user_can('edit_others_posts ') ) { $query['author'] = $user_id; } return $query; }
.
Ten kod używa funkcji current_user_can do sprawdzenia, czy użytkownik ma możliwość włączania wtyczek lub edytowania wpisów innych użytkowników. Jeśli nie, to zmienia zapytanie używane do wyświetlania plików multimedialnych i ogranicza je do identyfikatora użytkownika.
Mamy nadzieję, że ten artykuł pomógł ci dowiedzieć się, jak ograniczyć dostęp do multimediów WordPress do własnych plików przesłanych przez użytkownika. Możesz także chcieć ograniczyć autorów do ich własnych wpisów w obszarze administracyjnym WordPress.
Jeśli podobał Ci się ten artykuł, zasubskrybuj nasz kanał YouTube, aby zobaczyć poradniki dotyczące filmów WordPress. Możesz nas również znaleźć na Twitterze i Facebooku.
Noel Williams
Anyone looking for an update might want to consider the following which takes care of the list and grid issues
// For list view
add_action( 'pre_get_posts’, 'wpb_show_current_user_attachments_list_view’ );
function wpb_show_current_user_attachments_list_view( $query ) {
if ( is_admin() && $query->is_main_query() && $query->get(’post_type’) === 'attachment’ ) {
$user_id = get_current_user_id();
if ( $user_id && !current_user_can(’administrator’) ) {
$query->set(’author’, $user_id);
}
}
}
// For grid view
add_filter( 'ajax_query_attachments_args’, 'wpb_show_current_user_attachments_grid_view’ );
function wpb_show_current_user_attachments_grid_view( $query ) {
$user_id = get_current_user_id();
if ( $user_id && !current_user_can(’administrator’) ) {
$query[’author’] = $user_id;
}
return $query;
}
WPBeginner Support
Thank you for sharing this
Administrator
Bruno
The plugin works, but If you switch to 'upload.php?mode=list’ it’s possible to see all medias again. It works only on the mode=grid
WPBeginner Support
Thank you for sharing this information
Administrator
nathan
Amazing ! Its working !
But if using wordpress app installed from mobile, all users still can access whole media library. Any solutions?
Your help is much appreciated !
WPBeginner Support
We do not have a solution for the app at the moment but we will certainly keep an eye out.
Administrator
Alvaro Gomez
Thank you for mentioning my plugin
WPBeginner Support
Thank you for creating the plugin and placing it on the WordPress.org repo
Administrator
Daniel
Am looking for away i can make user upload directly from their pc instead of going to media page
kim
This may not be the post I need to be asking this on but….
What if you create a role for say, teacher. Is there a way or plugin that would filter so that one teacher can’t see another teacher media files? If that makes sense?
Teacher-username1- media (only see username1 media files)
Teacher-username2-media (only see username2 media files)
Hugh
Instead of:
!current_user_can(’activate_plugins’)
&&
!current_user_can(’edit_others_posts’)
USE:
!current_user_can(’administrator’)
Because if for example you use the 'User Role Editor’ plugin, you might want to allow the current user to be able to activate plugins AND/OR edit others posts.
Just a thought, works for me
Thanks for the post!
Peter
Nice post.
And is there a way to disallow uploading files directly to the media library and force users (except admins) to use Add Media button within post/page editor?
WPBeginner Support
Hi Peter,
Yes, there is. You can use Adminimize plugin to hide the Media link from your WordPress admin bar for all user roles except administrators.
Administrator