Wordpress: Slideshow im Header abhängig vom Inhalt

Heute bastelen wir uns in Wordpress einen Header, der eine Slideshow mit Bildern anzeigt, abhängig von der Seite die gerade angezeigt wird. Die Slideshow soll sich die Bilder aus Gallerien holen, die der einzelnen Seite zugeordnet ist. Dazu greifen wir auf die “Benutzerdefinierten Felder” in Wordpress sowie die beiden großartigen Wordpress-Plugins “NextGen Gallery” von Alex Raabe und “Smooth Gallery” von uniuni zurück. Wichtig ist, dass man diese “dynamischen Header” ohne großen Aufwand auf jeder beliebigen Seite nutzen kann, damit der Gelegenheitsautor mit möglichst wenig technischen Kenntnissen damit umgehen kann.

  1. Wir benötigen mehrere Gallerien - voll mit Bildern.  Wie das funktioniert möchte ich hier nicht erklären, da das auf der Seite von Alex Raabe sehr gut getan wird. Jede Gallerie ist über eine ID eindeutig identifizierbar; ich merke mir erstmal die ID meiner ersten Gallery, die 1.
  2. Wir benötigen bei allen unseren Seiten ein benutzerdefiniertes Feld, ich nenne es “gallery-id” und fülle das Feld mit der ID meiner ersten Gallery: 1.
  3. Wir benötigen in der header.php folgenden Code dort, wo wir ihn benötigen ;) (macht z.B. im Header-Container Sinn)

Nun würden wir aber immer die Gallery mit der ID 1 anzeigen, wir wollen aber die Gallery sehen, deren ID auf der Seite  im benutzerdefinierten Feld genannt wurde. Diesen Wert liest man folgendermaßen aus:

get_post_meta($post->ID, ‘gallery-id’, true);

$post->ID gibt die ID der aktuellen Seite zurück (nicht zu verwechseln mit der Gallery-ID!)

‘gallery-id’ ist der Name unseres benutzerdefinierten Felds

true gibt  an, dass ein String und kein Array zurück gegeben wird - wichtig!

Und wenn diese Zeile nun mit der ersten Code-Zeile kombiniert wird, sieht es folgendermaßen aus:

echo apply_filters( “the_content”, ‘[smooth=id:’. get_post_meta($post->ID, ‘gallery-id’, true) .’;]’ );

 

Fertig. Nun muss der Autor der Seiten nur noch daran denken, das benutzerdefinierte Feld der jeweiligen Seite mit der gewünschten Gallery-ID zu füllen.