Websupporter

Vor allem über WordPress.

Wähle das Headerbild abhängig von der Seite

Mit dem WordPress Customizer hielt ein sehr schönes Feature Einzug in WordPress: Das Headerbild. Wenn ein Theme Headerbilder mit add_theme_support() unterstützt kann der Administrator hier selbst ein solches Bild auswählen. Jetzt hatte ich gerade eine interessante Frage in einem Forum gelesen:

Kann mir bitte jemand sagen, ob und wie es möglich ist im Theme Twenty Eleven (2.1) ein Headerbild für jede Seite zu erstellen?

Ich fand die Frage ganz interessant, weil es dafür sicherlich eine hübsche Filterfunktion geben würde, die man hier einsetzen kann. Also habe ich ein wenig gestöbert. Mit get_header_image(), lokalisiert in der wp-includes/theme.php wird das Kopfbild ausgegeben. Diese Funktion greift dazu natürlich auf die get_theme_mod() zurück, welche sich in der gleichen Datei befindet. Der Name, der dabei erwartet wird ist „header_image“.

Die get_theme_mod() wiederum filtert ihre Ausgabe über den Filter „theme_mod_{name}“. Für das Bild im Header also über den Filter „theme_mod_header_image“. Und damit ist die Sache dann eigentlich auch schon abgeschlossen. Wir schreiben uns eine kleine Funktion, welche das Headerimage filtert. Diese Funktion prüft mit is_singular() zunächst, ob man sich auch auf einer (Beitrags-)Seite befindet. Wenn dem so ist wird geprüft, ob die aktuelle Seite über das benutzerdefinierte Feld „current-background“ verfügt. Ist dort eine URL zu einem Bild enthalten, so wird diese URL ausgegeben. In allen anderen Fällen wird das Standardbild, welches über den Customizer festgelegt wurde, ausgegeben:

Embed from pastebin.com

Click the button below to load the content from pastebin.com.


Always allow pastebin.com

Über den Autoren

Seine erste Webseite hat David Remer 1998 in HTML verfasst. Wenig später war er fasziniert von DHTML und JavaScript. Nach jahrelanger Freelancerei arbeitete er zunächst für Inpsyde und ist heute Entwickler bei Automattic. Außerdem hat er das Buch "WordPress für Entwickler" verfasst.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.