web-dev-qa-db-fra.com

Supprimer l'onglet "De l'ordinateur" du support pour les publications avec pièces jointes existantes?

Lors de la modification des pièces jointes d’un message avec au moins une pièce jointe précédemment téléchargée, comment puis-je supprimer l’onglet de l’ordinateur et le rediriger vers l’onglet Galerie onglet?

The "Add an Image" tabs

Ceci est mon code actuel:

add_filter('media_upload_tabs','remove_medialibrary_tabs', 99);
function remove_medialibrary_tabs($tabs) {
    if ($post_id = (isset($_REQUEST['post_id']) ? $_REQUEST['post_id'] : false)) {
        if (count(get_posts("post_type=attachment&post_parent={$post_id}"))>0) {
            // MY QUESTION
        }
    }

    unset($tabs['type_url']);
    unset($tabs['library']);

    return $tabs;
}

Pour supprimer l'en-tête de l'ordinateur , vous devez désélectionner la clé type de ce tableau . Cependant, cela ne supprimera pas (avec confusion) le contenu de l'onglet et, comme il s'agit de l'onglet par défaut, il l'affichera même si l'en-tête de l'onglet correspondant a disparu.

Pour changer l’onglet par défaut, vous devez accrocher le filtre media_upload_default_tab . Ceci est appelé à plusieurs endroits. Je n’ai pas recherché dans quel cas l’appel a été effectué. J'ai donc déplacé le contrôle des pièces jointes vers une fonction distincte et réécrit votre code comme suit:

add_filter('media_upload_tabs','wpse13567_media_upload_tabs', 99);
function wpse13567_media_upload_tabs( $tabs ) {
    if ( wpse13567_post_has_attachments() ) {
        unset( $tabs['type'] );
    }
    unset( $tabs['type_url'] );
    unset( $tabs['library'] );

    return $tabs;
}

add_filter( 'media_upload_default_tab', 'wpse13567_media_upload_default_tab' );
function wpse13567_media_upload_default_tab( $tab )
{
    if ( wpse13567_post_has_attachments() ) {
        return 'gallery';
    }
    return $tab;
}

function wpse13567_post_has_attachments()
{
    static $post_has_attachments = null;
    if ( null === $post_has_attachments && $post_id = (isset($_REQUEST['post_id']) ? $_REQUEST['post_id'] : false) ) {
        $post_has_attachments = count(get_posts("post_type=attachment&post_parent={$post_id}"))>0;
    }
    return $post_has_attachments;
}
5
Jan Fabry