Per impostazione predefinita, WordPress consente agli autori di vedere tutte le immagini presenti nella libreria multimediale del sito. Questo potrebbe essere un problema se si invitano molti autori ospiti. In questo articolo vi mostreremo come limitare l’accesso alla mediateca di WordPress ai soli upload degli utenti.
Perché limitare l’accesso alla libreria multimediale ai caricamenti dell’utente?
WordPress consente agli autori di vedere tutti i file della libreria multimediale. Possono anche vedere le immagini caricate da un amministratore, da un editore o da altri autori.
Per saperne di più, consultate il nostro articolo sui ruoli e i permessi degli utenti di WordPress.
Supponiamo che stiate creando un nuovo post per annunciare un prodotto o un’offerta imminente. Gli autori e gli ospiti del vostro sito web potranno vedere le immagini caricate per l’articolo nella libreria multimediale.
Le immagini caricate saranno visibili anche nel popup “Aggiungi media” che gli utenti vedono quando aggiungono immagini ai loro articoli.
Per molti siti web, questo potrebbe non essere un problema. Tuttavia, se gestite un sito web con più autori, potreste voler modificare questo aspetto.
Vediamo come limitare facilmente l’accesso alla mediateca ai soli upload degli utenti.
Metodo 1: Limitare l’accesso alla libreria multimediale con un plugin
Questo metodo è più semplice ed è consigliato a tutti gli utenti.
La prima cosa da fare è installare e attivare il plugin Restrict Media Library Access. Per maggiori dettagli, consultate la nostra guida passo passo su come installare un plugin di WordPress.
Questo plugin funziona subito e non ci sono impostazioni da configurare.
All’attivazione, filtra la query della libreria multimediale per vedere se l’utente corrente è un amministratore o un editor. Se il ruolo dell’utente non corrisponde a nessuno dei due, verranno mostrati solo i caricamenti dell’utente stesso.
Gli utenti con il ruolo di amministratore o di editor potranno vedere tutti i media caricati come di consueto.
Metodo 2: Limitare l’accesso alla libreria multimediale manualmente
Il primo metodo funziona per la maggior parte dei siti web, in quanto limita l’accesso alla libreria multimediale e consente solo all’amministratore e all’editor di visualizzare tutti i media caricati.
Tuttavia, se si desidera aggiungere un ruolo utente personalizzato o semplicemente non si vuole utilizzare un plugin, si può provare questo metodo. Utilizza lo stesso codice usato dal plugin, ma sarà possibile modificarlo per soddisfare le proprie esigenze.
Questo metodo richiede l’aggiunta di codice ai file di WordPress. Se non l’avete mai fatto prima, date un’occhiata alla nostra guida su come copiare e incollare il codice in WordPress.
Dovrete aggiungere il seguente codice al file functions.php di WordPress o a un plugin specifico del sito.
// 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; }
Questo codice utilizza la funzione current_user_can per verificare se l’utente ha la capacità di attivare plugin o modificare i post di altri utenti. In caso contrario, modifica la query utilizzata per visualizzare i file multimediali e la limita all’ID dell’utente.
Speriamo che questo articolo vi abbia aiutato a capire come limitare l’accesso alla mediateca di WordPress ai soli upload dell’utente. Potreste anche voler limitare gli autori ai propri post nell’area di amministrazione di WordPress.
Se questo articolo vi è piaciuto, iscrivetevi al nostro canale YouTube per le esercitazioni video su WordPress. Potete trovarci anche su Twitter e Facebook.
Syed Balkhi
Hey WPBeginner readers,
Did you know you can win exciting prizes by commenting on WPBeginner?
Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
You can get more details about the contest from here.
Start sharing your thoughts below to stand a chance to win!
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
Admin
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
Admin
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.
Admin
Alvaro Gomez
Thank you for mentioning my plugin
WPBeginner Support
Thank you for creating the plugin and placing it on the WordPress.org repo
Admin
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.
Admin