Benutzerdefinierte Bildgrößen in WordPress ermitteln

painting 840107 1920
Bildquelle: Pixabay, sylen

Ein in WordPress hochgeladenes Bild geht nicht einfach nur in die Mediathek ein, es entstehen dabei auch mehrere Versionen des Bildes, in unterschiedlichen Größen. WordPress-Standard sind thumbnail, medium, medium_large und large.

Die Standardmaße sind unter Einstellungen, Mediathek zu finden und lassen sich hier größenmäßig anpassen. Die kleinste Bildgröße hat als einzige die Option, beide Maße einzuhalten, mit exakt gleich großen Bildern. Neu definierte Größen werden auf alle Bilder angewendet die noch kommen. An den Bestehenden ändern sie nichts mehr.

Hier hilft das Plugin Force Regenerate Thumbnails, das nicht nur alle Bilder nach den neuen Vorgaben frisch generiert, sondern auch jene ihrer Größen entfernt, die mit der neuen Konfiguration hinfällig wurden.

Nicht selten kommt es vor, dass Themes benutzerdefinierte Bildgrößen einbringen, von denen der User gar nichts weiß. Sind es viele Bilder, vor allem große, beansprucht das Hochladen jedes Bildes mehr Ressourcen (PHP memory_limit), was bei manchen Hostern zu Engpässen führt. Wer zudem auf den Speicherplatz achten muss, ist mit weniger Bildzuschnitten auch besser bedient. Die Einbindung eines Optimierungsdienstes der nach Anzahl von Kompressionen abrechnet, kostet bei mehr Bildgrößen ebenfalls mehr.

Wenn ein Theme allerdings mit 20 verschiedenen eigenen Bildgrößen daherkommt, und es 25 Versionen jedes Bildes gibt, stellt sich mir dann doch die Frage, ob das wirklich sein muss. Schließlich ist die Anforderung an Bilder ohnedies, dass sie responsive sind, so dass es nicht unbedingt neben einem Format 700 x 350 auch noch eines mit 800 x 400 geben muss.

Nachfolgende Funktionen in der functions.php ermitteln, welche Bildgrößen es gibt, und welchen Formats sie sind.

function flxo_get_image_sizes() {
	global $_wp_additional_image_sizes;

	$sizes = array();

	foreach ( get_intermediate_image_sizes() as $_size ) {
		if ( in_array( $_size, array('thumbnail', 'medium', 'medium_large', 'large') ) ) {
			$sizes[ $_size ]['width']  = get_option( "{$_size}_size_w" );
			$sizes[ $_size ]['height'] = get_option( "{$_size}_size_h" );
			$sizes[ $_size ]['crop']   = (bool) get_option( "{$_size}_crop" );
		} elseif ( isset( $_wp_additional_image_sizes[ $_size ] ) ) {
			$sizes[ $_size ] = array(
				'width'  => $_wp_additional_image_sizes[ $_size ]['width'],
				'height' => $_wp_additional_image_sizes[ $_size ]['height'],
				'crop'   => $_wp_additional_image_sizes[ $_size ]['crop'],
			);
		}
	}

	return $sizes;
}


function list_additional_images() {
	global $_wp_additional_image_sizes;

	echo '<pre style="margin-left:220px">' .
	/* size names */
	print_r( get_intermediate_image_sizes(), 1 ) .
	/* size data */
	print_r( flxo_get_image_sizes(), 1 ) .
	/* additonal sizes only */
	print_r($_wp_additional_image_sizes, 1 ) .
    '</pre>';

}

add_action( 'admin_init', 'list_additional_images' );

Beispiel-Ergebnis, sichtbar im Dashboard

Array
(
    [0] => thumbnail
    [1] => medium
    [2] => medium_large
    [3] => large
    [4] => featured-image
    [5] => thumbnail-avatar
)
Array
(
    [thumbnail] => Array
        (
            [width] => 150
            [height] => 150
            [crop] => 1
        )

    [medium] => Array
        (
            [width] => 300
            [height] => 300
            [crop] => 
        )

    [medium_large] => Array
        (
            [width] => 768
            [height] => 0
            [crop] => 
        )

    [large] => Array
        (
            [width] => 1024
            [height] => 1024
            [crop] => 
        )

    [featured-image] => Array
        (
            [width] => 2000
            [height] => 1200
            [crop] => 1
        )

    [thumbnail-avatar] => Array
        (
            [width] => 100
            [height] => 100
            [crop] => 1
        )

)

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable