web-dev-qa-db-fra.com

Supprimer des onglets du chargeur de média pour un CPT

J'utilise le programme de téléchargement de média dans une propre méta-boîte pour un type de message personnalisé appelé "premium". La Thickbox s'ouvre après un clic sur le bouton dans la méta-boîte et les fichiers peuvent être téléchargés.

Maintenant, je veux supprimer les onglets "De l'URL" et "Bibliothèque" uniquement lorsque l'uploader est utilisé dans la page d'édition/nouvelle du CPT ou, si possible, avec l'appel de l'événement-clic.

Je n'ai aucune idée de comment résoudre.

P.S .: J'utilise ce js pour appeler la thickbox et j'ai essayé de supprimer une tabulation 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;
});
3
Guru 2.0

Vous pouvez utiliser la vérification media_upload_tabs filter pour votre type de publication et désélectionner tout onglet que vous ne voulez pas 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');
5
Bainternet

Tout d'abord, il est nécessaire de changer le JavaScript pour inclure le post_id dans la requête:

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();
    }
});

Alors la solution de Bainternet peut être utilisée dans le functions.php (ou similaire)

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');

Donc, tout fonctionne bien ensemble et les onglets sont supprimés.

1
Guru 2.0