The question:
I recently updated my WordPress site into the latest WordPress version, and i added a code to my functions.php
that would add a capability to subscriber to upload using WordPress media upload. I successfully remove the media library tabs on the later version of WordPress but when I updated the version it seems like the code does not work anymore. Any ideas how to fix this?
This is the previous code which I googled before:
function remove_medialibrary_tab($tabs){
if ( !current_user_can( 'administrator' ) || !current_user_can( 'editor' ) || !current_user_can( 'contibutor' ) || !current_user_can( 'author' ) ) {
unset($tabs['library']);
return $tabs;
} else {
return $tabs;
}
}
add_filter('media_upload_tabs','remove_medialibrary_tab');
if ( !current_user_can('upload_files') ){
add_action('init', 'allow_user_to_upload');
}
function allow_user_to_upload() {
$subscriber = get_role('subscriber');
$subscriber->add_cap('upload_files');
}
The Solutions:
Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.
Method 1
If you want to hide the Media Library submenu:
you can do it via the admin_menu
action:
function wpse85351_hide_submenus() {
if(!current_user_can('edit_posts')){
global $submenu;
unset($submenu['upload.php'][5]); // hide the Media Library
}
}
add_action('admin_menu', 'wpse85351_hide_submenus');
If you want to change/remove the Media strings:
you can use the media_view_strings
filter:
function wpse85351_media_strings($strings) {
// only for subscribers:
if(!current_user_can('edit_posts')){
// remove "mediaLibraryTitle"
unset($strings["mediaLibraryTitle"]);
}
return $strings;
}
add_filter('media_view_strings','wpse85351_media_strings');
You can use
!current_user_can('edit_posts')
instead of
!current_user_can( 'administrator' ) || !current_user_can( 'editor' ) || !current_user_can( 'contibutor' ) || !current_user_can( 'author' )
to restrict it only to “subscribers”.
Here is the array of all the Media View Strings that you can unset or change to your needs:
Array
(
[url] => URL
[addMedia] => Add Media
[search] => Search
[select] => Select
[cancel] => Cancel
[selected] => %d selected
[dragInfo] => Drag and drop to reorder images.
[uploadFilesTitle] => Upload Files
[uploadImagesTitle] => Upload Images
[mediaLibraryTitle] => Media Library
[insertMediaTitle] => Insert Media
[createNewGallery] => Create a new gallery
[returnToLibrary] => ← Return to library
[allMediaItems] => All media items
[noItemsFound] => No items found.
[insertIntoPost] => Insert into post
[uploadedToThisPost] => Uploaded to this post
[warnDelete] => You are about to permanently delete this item.
'Cancel' to stop, 'OK' to delete.
[insertFromUrlTitle] => Insert from URL
[setFeaturedImageTitle] => Set Featured Image
[setFeaturedImage] => Set featured image
[createGalleryTitle] => Create Gallery
[editGalleryTitle] => Edit Gallery
[cancelGalleryTitle] => ← Cancel Gallery
[insertGallery] => Insert gallery
[updateGallery] => Update gallery
[addToGallery] => Add to gallery
[addToGalleryTitle] => Add to Gallery
[reverseOrder] => Reverse order
)
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0