Adventskalender Tag 20: Eine Taxonomie-Galerie erstellen

Vor einiger Zeit hatte jemand in einer Anfrage in einer Gruppe folgendes Problem beschrieben: Es sollte möglich sein, Bilder mit einer Kategorie oder einem Schlagwort versehen zu können und dieses dann zu verwenden, um eine automatische Galerie zu füllen. Wenn man die normale Funktion zum Erstellen einer Galerie verwendet, dann ist diese statisch. Kommt ein neues Bild hinzu, muss man die Galerie manuell um die ID des neuen Bildes erweitern oder aber die Galerie löschen und neu einfügen. Genau das war aber recht umständlich. Ein neues Bild sollte erscheinen, sobald es mit der entsprechenden Taxonomie (Kategorie oder Schlagwort) markiert wurde.

Die Verschlagwortung von Bildern ermöglichen

Zuerst einmal war es notwendig, eine Möglichkeit zu schaffen, einem Bild eine Kategorie oder ein Schlagwort zuzuordnen. Da es sich bei jedem Bild um einen Post-Type „attachment“ handelt, ist das im Grunde auch recht einfach. Nur ist diese Möglichkeit standardmäßig nicht vorgesehen. Es ist aber nur ein Funktionsaufruf notwendig, um es doch zu ermöglichen:

register_taxonomy_for_object_type( 'post_tag', 'attachment' );

Mit diesem einfachen Code aktivieren wir die Möglichkeit, ein Schlagwort zu jedem Attachment hinzufügen zu können. Aber wie genau ordnen wir ein solches Schlagwort nun zu einem Bild zu? Leider ist dies etwas umständlich. Man navigiert hierzu erst einmal im Dashboard zur Medienübersicht. Anschließend klickt man ein Bild an:

dateianhang-details

Hier haben wir nun zwei Möglichkeiten. Zum einen können wir auf den Link „Weitere Details bearbeiten“ klicken. Hiermit kommen wir dann auf die Beitragsseite zum Dateianhang, wie wir ihn auch von Beiträgen und Seiten gewohnt sind. In der rechten Sidebar finden wir dann die Meta-Box für Schlagworte und können diese wie gewohnt auswählen oder neue hinzufügen:

medium-bearbeiten

Eine weitere Möglichkeit besteht in dem Fenster mit den Dateianhang-Details. Hier findet ihr rechts ein neues Textfeld „Schlagworte“ (siehe erstes Bild rechts oberhalb der Links). Dort könnt ihr eine kommagetrennte Liste an vorhandenen „Slugs“ der Schlagworte eingeben. Gebt ihr stattdessen neue Schlagwörter eine, werden diese automatisch in ein neues Schlagwort umgewandelt und durch den Slug ersetzt. Die Änderungen werden gespeichert, sobald ihr das Feld verlasst oder Enter drückt.

Eine Taxonomie-Galerie in einen Beitrag einfügen

Ich habe zu diesem Zweck einen neuen Shortcode taxonomy_gallery gebastelt. Dieser akzeptiert alle Parameter des normalen gallery Shortcodes und erweitert ihn um folgende weitere Parameter:

  • category_id
  • category_name
  • tag_id
  • tag_name

Es handelt sich hierbei um die normalen Parameter der WP_Query() Funktion. Es können also, wie auch in der Dokumentation beschrieben, eine kommagetrennte Liste von IDs oder Namen der Kategorien und Schlagworte verwendet werden. Der Shortcode könnte also beispielsweise wie folgt eingesetzt werden:

[taxonomy_gallery tag_name="festival-of-lights" size="large" columns="1"]

Dies erzeugt eine Galerie mit allen Bildern, die das Schlagwort „Festival of Lights“ haben, verwendet hierbei die Bilder in größer Auflösung und zeigt sie in einer Spalte untereinander an:

taxonomie-galerie

Fazit

Es ist sehr einfach einen Post-Type in WordPress um Taxonomien zu erweitern. Das gilt daher auch für Dateianhänge und somit für Bilder. Ich hoffe ihr könnt den neuen Shortcode auch in eurem Blog gut einsetzen. Selbstverständlich gibt es den Code wieder in einem GitHub Repository und dort als ZIP-Datei zum Runterladen in Form eines Plugins.

Veröffentlicht von

Bernhard ist fest angestellter Webentwickler, entwickelt in seiner Freizeit Plugins, schreibt in seinem Blog über WordPress und andere Themen, treibt sich gerne bei den WP Meetups in Berlin und Potsdam herum und läuft nach Feierabend den ein oder anderen Halbmarathon.

7 Kommentare » Schreibe einen Kommentar

  1. Hallo & erst einmal vielen Dank für die tollen Tipps auf diesen Seiten!

    Frage: Wird ein Bild sofort nach dem hochladen in die Galerie eingefügt?

    Meine Artikel sind oft schon für einige Tage vorbereitet und werden dann peu à peu veröffentlicht, die darin enthaltenen Bilder sollten vorher nirgendwo anders erscheinen.
    Nach der Veröffentlichung wäre es natürlich toll, wenn Bilder ohne mein zutun in einer zugewiesenen Galerie landen.

    Martin

    • Hallo Martin,

      ja das Bild wird sofort nach dem Hochladen in der Galerie angezeigt, sofern es vor dem Hochladen schon mit den richtigen Schlagwörtern versehen wurde.

      • Danke für die schnelle Antwort und schade… dann bleibe ich einfach bei einer monatlichen Aktualisierung der Galerien.
        Ich glaube wenn ich deinen Adventskalender „durchgearbeitet“ habe, dürfte ich deutlich mehr von WordPress verstanden haben – erneut vielen vielen Dank dafür!

        • Wieso ist es denn ein Problem, dass die Bilder sofort in der Galerie erscheinen? Genau das möchtest du doch, oder nicht? Den Artikel mit der Galerie kannst du ja trotzdem erst später veröffentlichen. Vorher ist die Galerie dann auch nicht zu sehen. Oder verwendest du das gleiche Bild in mehreren Galerien?

          • Ich veröffentliche jeden Tag in Form eines Artikels ein Zitat/Spruch mit Bild, dieses hat z.B. das Thema Glück.
            Es gibt aber auch eine bereits bestehende Seite unter der selben Domain mit einer Galerie zum Thema Glück in der alle bereits veröffentlichten Bilder zum Thema sein sollten, das mache ich manuell und hatte gedacht das automatisieren zu können.

            Die Zitate-Seite war mein erstes WordPress/Internet Projekt, ich habe seither ein wenig dazugelernt und spiele mit dem Gedanken einer Zweitverwertung mit den Bildern auf einer neuen, besser durchdachten, Seite. Spätestens dann kommen einige deiner sehr guten, und vor allem sehr gut verständlichen Tipps zum Einsatz.

          • Ah verstehe. Dann möchetst du natürlich erst dann das Bild auf der neuen Seite sehen, wenn auch der Artikel dafür veröffentlicht wurde.

            Ich denke ich würde es dann anders angehen. Hierzu würde ich wohl einfach eine spezielle Archivseite erstellen (z.B. eine Datei category-glueck.php), die dann solche Artikel auflistet. Dabei wird dann auch berücksichtigt, ob ein Artikel bereits veröffentlicht wurde oder nicht.

          • Genau, mittlerweile integriere ich so etwas schon. Hab’s am Anfang einfach alles zu schlecht durchdacht. Trotzdem ist deine Lösung smarter!

Schreibe einen Kommentar

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