WordPress: Mediathek Image Cropping

Wer nach längerer Zeit oder auch erstmalig einen Blick in das Mediathek-Verzeichnis seiner WordPress Installation wirft, mag eine Überraschung erleben. Jedes jemals hochgeladene Bild ist dort in unterschiedlichen Größen mehrfach hinterlegt. Einige entstammen der WordPress Voreinstellung, Vorschaubilder (150 × 150) und mittelgroße Bilder (300 × 300), andere sind Themen spezifisch. Die WordPress Voreinstellungen findet man unter dem Menüpunkt Einstellungen/Medien nebst der Regler für die Anpassung der Bildgrößen.
Das Thema Twentyfifteen selbst erzeugt einen eigenen Crop in der Größenvorgabe 825 × 510 zusätzlich. Sollte das Original zum Beispiel in der Größe 800 × 800 vorliegen, dann wird durch Zuschnitt eine Kopie im Format 800 × 510 erzeugt. Da wahrscheinlich niemand etwas sinnvolles damit anfangen kann, sollte die regelmäßige Produktion einer solchen Kopie von vornherein unterbunden werden. Leider läßt sich das nur durch den Eingriff in den Themen spezifischen PHP-Code erreichen

Zunächst kann man die PHP-Module absuchen nach einer Zeichenkette, die die Angaben »825« und »510« enthalten, etwas davor, vielleicht dazwischen und danach auch:

$ find ./wordpress -type f -print0 | xargs -0 grep -n '^.*825.*510.*$'
./wordpress/wp-content/themes/twentyfifteen/functions.php:81:
	set_post_thumbnail_size( 825, 510, true );
...

In Zeile 81 der Datei wordpress/wp-content/themes/twentyfifteen/functions.php wird demnach die zusätzliche Kopie definiert. Durch einfaches auskommentieren der Zeile kann die zukünftige Kopiebildung unterbunden werden. Die Zeile 81 in der functions.php sieht anschließend dann so aus:

$ sed -n '75,87p' ./wordpress/wp-content/themes/twentyfifteen/functions.php
	/*
	 * Enable support for Post Thumbnails on posts and pages.
	 *
	 * See: https://codex.wordpress.org/Function_Reference/add_theme_support#Post_Thumbnails
	 */
	add_theme_support( 'post-thumbnails' );
	//set_post_thumbnail_size( 825, 510, true );

	// This theme uses wp_nav_menu() in two locations.
	register_nav_menus( array(
		'primary' => __( 'Primary Menu',      'twentyfifteen' ),
		'social'  => __( 'Social Links Menu', 'twentyfifteen' ),
	) );

Diese Manipulationen am PHP-Quellcode sind überaus problematisch. Zum einen kann man Fehler machen, überblickt unter Umständen nicht die Gesamtzusammenhänge, zum anderen funktionieren vielleicht PlugIns anschließend nicht mehr. Dennoch baut die Vielfalt des Systems WordPress auf genau solchen Modifikationen auf. Da zukünftige WordPress Updates die selbst vorgenommmenen Veränderungen wieder überschreiben, sollte man sich genau die Positionen merken, die es nach einem Update erneut zu überprüfen gilt. Das ganze wird dann schnell zu einer Sisyphusarbeit. Die schlechteste Lösung wäre es aber aus Bequemlichkeit an nachfolgenden Patches und Weiterentwicklungen nicht mehr partizipieren zu wollen.
rh2015-12-003