it-swarm.com.de

Medienregisterkarte "Vom Computer" für Posts mit vorhandenen Anhängen entfernen?

Wie entferne ich beim Bearbeiten der Anhänge eines Beitrags mit mindestens einem zuvor hochgeladenen Anhang den Tab vom Computer und leite zum Tab Registerkarte Galerie ?

The "Add an Image" tabs

Das ist mein aktueller Code:

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

Um den From Computertab -Headerzu entfernen, müssen Sie den type-Schlüssel aus diesem Array entfernen . Dies entfernt jedoch (verwirrenderweise) nicht den Tabulator content, und da dies der Standard-Tabulator ist, wird er angezeigt, auch wenn der Tabulator-Header dafür weg ist.

Um die Standardregisterkarte zu ändern, müssen Sie sich in den media_upload_default_tab-Filter einhängen. Dies wird an mehreren Stellen aufgerufen. Ich habe nicht untersucht, welche unter welchen Umständen aufgerufen wird. Daher habe ich die Prüfung auf Anhänge in eine separate Funktion verschoben und Ihren Code folgendermaßen umgeschrieben:

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