私は「プレミアム」と呼ばれるカスタム投稿タイプのためにそれ自身のメタボックスでメディアアップローダーを使います。 Thickboxはメタボックスのボタンをクリックした後に開き、ファイルをアップロードすることができます。
CPTのedit/new-pageでアップローダを使用した場合、または可能であればclick-eventの呼び出しでアップローダを使用した場合にのみ、タブ「URLから」と「ライブラリ」を削除したいと思います。
解決方法がわかりません。
P.S .: thickboxを呼び出すためにこのjsを使用し、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;
});
投稿タイプにmedia_upload_tabs filter
チェックを使用して、不要なタブを設定解除することができます。
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');
まず、リクエストにpost_idを含めるためにJavaScriptを変更する必要があります。
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();
}
});
それからBainternetの解はfunctions.php(または同様のもの)で使用することができます。
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');
だからすべて一緒にうまく動作し、タブが削除されます。