I use the media uploader in a own meta-box for a custom post type called “premium”.
The Thickbox opens after a click of the button in the meta-box and files can be uploaded.
Now I want to remove the tabs “From URL” and “Library” only when used the uploader in the edit/new-page for the CPT or if possible with the call of the click-event.
I have no idea how to resolve.
P.S.:
I use this js for calling the thickbox and tried to remove a tab via jQuery:
jQuery(document).ready(function() {
jQuery('#pc_extContent_button').click(function() {
formfield = jQuery('#pc_extContent').attr('name');
tbframe_interval = setInterval(function() {
jQuery('#tab-type_url').hide();
}, 2000);
tb_show('', 'media-upload.php?type=file&TB_iframe=true')
return false;
});
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
You can use the media_upload_tabs filter check for your post type and unset any tab you don’t want ex:
function remove_media_library_tab($tabs) {
if (isset($_REQUEST['post_id'])) {
$post_type = get_post_type($_REQUEST['post_id']);
if ('premium' == $post_type)
unset($tabs['library']);
unset($tabs['type_url']);
}
return $tabs;
}
add_filter('media_upload_tabs', 'remove_media_library_tab');
Method 2
First it is necessar to change the JavaScript for including the post_id in the request:
jQuery(document).ready(function() {
jQuery('#pc_extContent_button').click(function() {
var pID = jQuery('#post_ID').val();
formfield = jQuery('#pc_extContent').attr('name');
tb_show('premiumTB', 'media-upload.php?post_id='+ pID +'&type=image&TB_iframe=true');
return false;
});
window.send_to_editor = function(html) {
imgurl = jQuery('img', html).attr('href');
jQuery('#pc_extContent').val(imgurl);
tb_remove();
}
});
Then the solution of Bainternet can be used in the functions.php (or similar)
function remove_media_library_tab($tabs) {
if (isset($_REQUEST['post_id'])) {
$post_type = get_post_type($_REQUEST['post_id']);
if ('premium' == $post_type) {
unset($tabs['library']);
unset($tabs['type_url']);
}
}
return $tabs;
}
add_filter('media_upload_tabs', 'remove_media_library_tab');
So all works fine together and the tabs are removed.
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