Ankerlink an den Anfang der Seite
fly agaric 451766 1920
Generic filters
Filter by Kategorien

Der Beitrag, geschriebem am 17. September 2018, ist schon etwas älter und könnte womöglich nicht mehr aktuell sein

Neben Parametern für Größe und Attribute ist auch der HTML-Output eines Beitragsbildes überschreibbar – vorausgesetzt, man hat kein Theme installiert, das ihn bereits so überschreibt, dass es den entsprechenden Filter außer Kraft setzt (Hinweis: das kann auch nur dann der Fall sein, wenn man ein benutzerdefiniertes Format definiert hat, also ggf. zuerst Einstellungen prüfen). In diesem Fall wird das Beispiel nicht funktionieren.

Im Weiteren geht das Beispiel der Einfachheit halber davon aus, dass Advanced Custom Fields aktiv ist.

Die Anforderung

Der Websiteinhaber wünschte sich für Archivansichten andere Vorschaubilder als jene, die in den Beiträgen selbst als Beitragsbilder verwendet werden.

Es braucht dafür zwei Dinge: den post_thumbnail_html-Filter und die ID des Bildes das in den Archivansichten das Standard-Beitragsbild ersetzen soll.

Berücksichtigt

  • Responsive Images
  • Anwendung optional (wird kein Archivbild festgelegt, wird das Thumbnail-Format des Beitragsbilds verwendet).

Als benutzerdefiniertes Feld in Beiträgen einen Bild-Upload anlegen (hier archive_featured_image benannt) und die Bild-ID zurückgeben lassen.

functions.php

/**
 * Replace post thumbnail html on archive pages
 */
function mytheme_replace_post_thumbnail_html( $html, $post_id, $post_thumbnail_id ) {
	if ( is_singular() ) return $html;
	if ( 'post' != get_post_type( $post_id ) ) return $html;

	$size = 'full';
	$img = get_field( 'archive_featured_image', $post_id );
	$post = get_post( $post_id );
	/* Beitragsbild als Ersatzbild */
	if ( !$img ) {
		$img = $post_thumbnail_id ;
		$size = 'thumbnail';
	}
	/* gar kein Bild? - Abbruch */
	if ( empty( $img ) ) return $html;
	$src = wp_get_attachment_image_src( $img, $size );
	$srcset = wp_get_attachment_image_srcset( $img, $size );
    $html = sprintf('<img src="%1$s" width="%2$s" height="%3$s" srcset="%4$s" alt="%5$s" />', $src[0], $src[1], $src[2], $srcset, ( !empty( $img->post_excerpt ) ? $img->post_excerpt : $post->post_title ) );
    return $html;
}
add_filter('post_thumbnail_html', 'mytheme_replace_post_thumbnail_html', 14, 5);

Bitte das Kommentarfeld nicht für Supportanfragen nutzen; hier kann kein Support angeboten werden. Die Angabe von Name oder E-Mail-Adresse ist optional, ein Spitzname wäre trotzdem nett.

Schreibe einen Kommentar

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

Hinweis: Name und E-Mail-Adresse (beides optional, da alle Kommentare moderiert werden) werden dauerhaft gespeichert. Über dieses Formular kann jeder Zeit die Löschung persönlicher Daten oder Kommentare angefordert werden; die Anfrage wird nicht veröffentlicht und nach der Bearbeitung gelöscht. IP-Adressen, die mit Kommentaren gespeichert werden, werden nach zwei Monaten automatisch gelöscht.

Ihre Nachricht wird möglicherweise zur Spam-Prüfung an OpenAI (USA) weitergeleitet. Weitere Informationen finden Sie in unserer Datenschutzerklärung.