Schlagwortbilder anstatt Beitragsbilder im Header der Website

Eigentlich ist es üblich ein Artikel zusammen mit einem Beitragsbild auszuliefern. Fast alle aktuellen Themen verlangen dies. Das war hier auch schon öfters Thema. Auch meine Einstellung, dass ich es problematisch sehe Bilder auf freien Bilddatenbanken zu nutzen, habe ich hier schon veröffentlicht. Trotzdem wäre es schön in diesem Blog für einige Artikel passende Headerbilder zu zeigen.

Was macht man in diesem Fall? Die Lösung ist nicht so schwer. Man nimmt die wichtigsten Kategorien und stattet diese mit einem Standardbild aus. Sucht man im Web nach dieser Lösung, findet man zum Beispiel diese Seite. Thomas Weichselbaumer macht dort auf ein Plugin aufmerksam, dass als Fallback für nicht vorhandene Beitragsbilder dient.

So was ähnliches hatte ich mir vorgestellt, nur dass ich gerne Schlagwörter nutzen möchte und gar keine Beitragsbilder habe. Das funktioniert! Allerdings mit etwas Bastelarbeit und ohne dieses Plugin. Das Theme Harrison benutzt, um Beitragsbilder im Header der Website anzuzeigen, die Funktion harrison_header_image(). Diese ist in der Datei /inc/template-tags.php zu finden. Diese Funktion stellt mit Hilfe einer If-Abfrage fest, ob ein Beitragsbild für einen Artikel vorhanden und die entsprechende Option aktiviert ist. Ist beides der Fall zeigt das Theme das Beitragsbild im Header an. Fehlt das Beitragsbild, wird der Standardheader angezeigt. Diese Funktion lässt, wenn man die If-Abfrage erweitert um einige Schlagwörter erweitern.

/**
* Eigene Headerbild für Artikel mit wichtigsten Schlagwörtern
* ---------------------------------------------------------
* Stellt für Schlagwörter eigene Headerbilder zur Verfügung. 
* Originalfunktionen ist in '/inc/template-tags.php' zu finden.
*/

function harrison_header_image() {
  if ( is_single() && has_post_thumbnail() && 'header-image' === harrison_get_option( 'post_image_single' )
  || is_page() && has_post_thumbnail()
  || is_single() && is_customize_preview() && has_post_thumbnail()
  ) :
  ?>

    <div id="headimg" class="header-image featured-header-image">

    <?php the_post_thumbnail( 'harrison-featured-header-image' ); ?>

    </div>

  <?php
  elseif ( is_single()  && has_tag( 'firefox' ) && 'header-image' === harrison_get_option( 'post_image_single'     ) ) :
  ?>

    <div id="headimg" class="header-image featured-header-image">

    <img src="<?php echo esc_attr(wp_get_attachment_image_url( '3362', 'harrison-featured-header-image', )); ?>"   srcset="<?php echo esc_attr( wp_get_attachment_image_srcset( '3362', 'harrison-featured-header-image' ) ); ?>"   width="<?php echo esc_attr( get_custom_header()->width ); ?>" height="<?php echo esc_attr(   get_custom_header()->height ); ?>" alt="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>">

    </div>

  <?php
  elseif ( is_single()  && has_tag( 'fritzbox' ) && 'header-image' === harrison_get_option( 'post_image_single' ) ) :
  ?>

    <div id="headimg" class="header-image featured-header-image">

    <img src="<?php echo esc_attr(wp_get_attachment_image_url( '3361', 'harrison-featured-header-image', )); ?>" srcset="<?php echo esc_attr( wp_get_attachment_image_srcset( '3361', 'harrison-featured-header-image' ) ); ?>" width="<?php echo esc_attr( get_custom_header()->width ); ?>" height="<?php echo esc_attr( get_custom_header()->height ); ?>" alt="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>">

    </div>

  <?php
  elseif ( has_header_image() ) :
  ?>

  <  div id="headimg" class="header-image default-header-image">

    <img src="<?php header_image(); ?>" srcset="<?php echo esc_attr( wp_get_attachment_image_srcset( get_custom_header()->attachment_id, 'full' ) ); ?>" width="<?php echo esc_attr( get_custom_header()->width ); ?>" height="<?php echo esc_attr( get_custom_header()->height ); ?>" alt="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>">

    </div>

    <?php
  endif;
}

Mittels Elseif-Abfrage ermittele ich, ob es sich um eine Artikelseite handelt, ob das Schlagwort z.B „firefox“ vorhanden ist und ob die entsprechende Harrison-Option aktiviert ist. Trifft das alles zu wird als Headerbild ein Bild aus der Mediathek mit Hilfe der WordPress-Funktion wp_get_attachment_image_url geladen. Diese Funktion benötigt als Parameter Die ID und Größe des Bilds. Die ID ist ein Teil des Links zum Bearbeiten des Bilds. Als Größe nutzt Harrison harrison-featured-header-image. Diese Bildgröße (1440×600) ist im Theme Harrison in der functions.php definiert. In obigen Zeilen ist nur eine Elseif-Abfrage zu finden. Sollten mehrere Schlagwörter mit Bildern versehen werden, müssen mehrere solche Abfragen hinzugefügt werden.