Som standard tillåter WordPress auktoriseringar att se alla images på din sites mediabibliotek. Detta kan vara problematiskt om du bjuder in många gästförfattare. I den här artikeln visar vi dig hur du begränsar åtkomsten till WordPress mediabibliotek till användarens egna uppladdningar.
Varför begränsa åtkomsten till mediabiblioteket till användarens egna uppladdningar?
WordPress allow authors att se alla filer i mediabiblioteket. De kan också se images som har laddats upp av en administratör, editor eller andra författare.
Mer information finns i vår artikel om roller och behörigheter för WordPress-användare.
Låt oss säga att du skapar en new post för att tillkännage en kommande produkt eller affär. Författare och gästförfattare på din website kommer att kunna se de images du uploadar till den artikeln i mediabiblioteket.
Dina uppladdningar kommer också att synas i popupen ”Add Media” som användare ser när de lägger till images i sina egna artiklar.
För många websites kanske det här inte är någon stor sak. Men om du run en multi-author website, då kanske du vill ändra detta.
Låt oss ta en titt på hur du enkelt begränsar åtkomsten till mediabiblioteket till användarnas egna uppladdningar.
Metod 1: Begränsa åtkomst till mediabibliotek med ett tillägg
Den här metoden är enklare och rekommenderas för alla användare.
Det första du behöver göra är att installera och aktivera tillägget Begränsa åtkomst till mediabibliotek. För mer detaljer, se vår steg-för-steg guide om hur du installerar ett plugin för WordPress.
Det här pluginet fungerar direkt från boxen och det finns inga inställningar som du behöver konfigurera.
Vid aktivering filtrerar det mediabibliotekets sökning för att se om den aktuella användaren är administratör eller editor. Om användarens roll inte matchar någon av dem, kommer det bara att visa användarens egna uppladdningar.
Användare med användarrollen administratör eller editor kommer att kunna se alla mediauppladdare som vanligt.
Metod 2: Begränsa åtkomsten till mediabiblioteket manuellt
Den första metoden skulle fungera för de flesta webbplatser eftersom den begränsar åtkomst till mediabibliotek och endast tillåter administratör och editor att se alla mediauppladdningar.
Men om du vill add to en custom användares roll eller helt enkelt inte vill använda ett plugin, kan du prova den här metoden istället. Den använder samma kod som används av pluginet, men du kommer att kunna ändra den för att möta dina behov.
Den här metoden är obligatorisk för att du ska kunna add to kod i dina WordPress-filer. Om du inte har gjort det tidigare kan du ta en titt på vår guide om hur du copy and paste kod i WordPress.
Du måste add to följande kod till din WordPress functions.php-fil eller ett site-specifikt plugin.
// 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; }
Den här koden använder funktionen current_user_can för att kontrollera om användaren har capability att aktivera tillägg eller editera andra användares posts. Om de inte gör det ändras den sökning som används för att visa media filer och limit den till användarens ID.
Vi hoppas att den här artikeln hjälpte dig att lära dig hur du begränsar åtkomsten till WordPress mediabibliotek till användarens egna uppladdningar. Du kanske också vill limitera författare till sina egna posts i WordPress admin area.
Om du gillade den här artikeln, vänligen prenumerera på vår YouTube-kanal för WordPress video tutorials. Du kan också hitta oss på Twitter och Facebook.
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
Administratör
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
Administratör
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.
Administratör
Alvaro Gomez
Thank you for mentioning my plugin
WPBeginner Support
Thank you for creating the plugin and placing it on the WordPress.org repo
Administratör
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.
Administratör