web-dev-qa-db-ger.com

Ändern Sie die Größe der Miniaturbilder für Administrationsbeiträge nur für benutzerdefinierte Beitragstypen

Ich möchte die Größe des mit Federn versehenen Bildes nur für einen benutzerdefinierten Beitragstyp ändern. Das habe ich aktuell:

function custom_admin_thumb_size($thumb_size){

    global $post_type;
    if( 'slider' == $post_type ){

        return array(1000,400);

    }else{

        return array(266,266);
    }

}
add_filter( 'admin_post_thumbnail_size', 'custom_admin_thumb_size');

Diese Funktion macht das, was ich erwartet hatte, aber ich habe mich gefragt, ob es eine bessere Methode gibt, den benutzerdefinierten Beitragstyp "Slider" aufzurufen, ohne die anderen zu berühren.

Danke im Voraus

2
Wilco

admin_post_thumbnail_size nimmt drei Parameter an:

  1. $ thumb_size: Ausgewählte Daumengröße, wenn Sie nichts im Filter tun.

  2. $ thumbnail_id: ID des Thumbnail-Anhangs.

  3. $ post: zugehörige WP_Post-Instanz

Sie können diese Parameter also verwenden, um eine bessere Kontrolle in Ihrem CODE zu haben. Verwenden Sie den folgenden CODE:

function custom_admin_thumb_size( $thumb_size, $thumbnail_id, $post ) {
    if( 'slider' === $post->post_type ) {
        return array( 1000, 400 );
    }

    return $thumb_size;
}
add_filter( 'admin_post_thumbnail_size', 'custom_admin_thumb_size', 10, 3);
3
Fayaz

Es gibt keinen Filter, um dies nur für einen bestimmten post_type zu tun, aber Sie können get_post_type( esc_attr( $_GET['post'] ) ) verwenden, um grundsätzlich eine Codezeile zu speichern.

Sie können auch die else-Anweisung entfernen, da Ihre if-Anweisung einen Return hat, den sie nach if sowieso nicht erreicht. Davon abgesehen ist dies im Grunde das, was Sie tun.

function custom_admin_thumb_size( $thumb_size ){

    if( 'slider' == get_post_type( esc_attr( $_GET['post'] ) ) ) {

        return array( 1000, 400 );

    }

    return array( 266, 266);

}
add_filter( 'admin_post_thumbnail_size', 'custom_admin_thumb_size' );