Linkverzeichnis mit WordPress – Einführung

Mit einigen kleinen Anpassungen kann man WordPress auch als Grundlage für ein Verzeichnis oder einen Katalog benutzen. Es soll im Folgenden gezeigt werden, was WordPress an Funktionalität von Haus aus schon mitbringt und welche Änderungen und Erweiterungen vorgenommen werden müssen. Als Beispiel dient das neue Statistikverzeichnis Stichprobengröße.

Posts als Verzeichniseinträge

WordPress ermöglicht es Beiträge (Posts) in hierarchisch organisierten Kategorien abzulegen. Genau das gleiche wird auch in einem (herkömmlichen) Linkverzeichnis gemacht: Man klickt sich von oben nach unten durch die thematisch sortierten Kategorien und findet dort eine Zusammenstellung von (hoffentlich passenden) Verzeichniseinträgen.

Ein Verzeichniseintrag sollte mindestens aus einem Titel, einer Beschreibung und einem Link bestehen. Die Beschreibung kann entsprechend dem Inhalt eines Blogbeitrags behandelt werden, Titel bleibt Titel. Die erste nötige Anpassung besteht also lediglich darin, eine Möglichkeit zur Speicherung und Ausgabe der URL zum Link zu schaffen.

Speichern und Ausgeben der URLs

Zu jedem Verzeichniseintrag gehört also eine externe URL, auf die verlinkt werden soll. Diese kann über die Custom Fields zum Beitrag als Metainformation zum Verzeichniseintrag abgespeichert werden. Eine PHP-Funktion sollte geschrieben werden, die die Abfrage der URL aus der Datenbank kapselt.

URL als 'Custom Field'

In vielen Verzeichnissen ist es so, dass der Titel des Verzeichniseintrags mit der dazugehörigen externen URL verlinkt ist. In Blogs dagegen führt ein Klick auf den Titel zur Beitragsansicht. In den Templatedateien des benutzten Themes müssen also alle Stellen, an denen der Titel verlinkt ist, geändert werden. Statt so etwas wie

<a href="<?php the_permalink() ?>"><?php the_title(); ?></a>

muss dort so etwas wie

<a href="<?php <em>the_url()</em> ?>"><?php the_title(); ?></a>

stehen, wobei the_url() als Platzhalter für die oben erwähnte Funktion zu verstehen ist, mit der die zum Beitrag abgespeicherte URL ausgegeben wird.

Anpassung der Navigation

Wenn man WordPress für ein Linkverzeichnis benutzen will, gibt es einige Dinge an der Navigation, die bei „WordPress unplugged“ noch nicht befriedigend umgesetzt sind:

Anzeige leerer Kategorien

Wenn man sich mit Hilfe der Funktion wp_list_cats() eine Liste der Unterkategorien anzeigen lassen möchte, werden Kategorien, die selbst keine Einträge, stattdessen aber Unterkategorien mit Einträgen enthalten, nicht angezeigt, wenn der Parameter hide_empty=1 ist (was der Voreinstellung entspricht). Setzt man dagegen hide_empty auf 0, werden wiederum auch völlig leere Unterkategorien angezeigt (was man, zumindest bei Aufbau eines Katalogs, vielleicht nicht unbedingt möchte). Eine kleine Anpassung im Code hilft, benötigt aber wiederum die…

Korrekte Zählung der Einträge

Standardmäßig zählt wp_list_cats() nur die Einträge in einer Kategorie selbst, die Anzahl der Einträge, die in den Unterkategorien dieser Kategorie enthalten sind, wird nicht mitgezählt. Eine rekursive Funktion correct_count() wurde geschrieben, die alle Einträge zusammenzählt.

Zählung der Katalogeinträge

Breadcrumb-Navigation

Um eine solche Brotkrümel-Navigation für die Navigation durch die hierarchischen Kategorien zu realisieren, kann man auf die Funktion get_category_parents() zurückgreifen. Eine zusätzlich geschriebene kleine PHP-Funktion entfernt die Verlinkung zur gerade aktiven Kategorie und zeichnet diese mit einem Klassenattribut aus, so dass die aktive Kategorie anders (z.B. in einer größeren Schrift) formatiert werden kann.

Breadcrumb-Navigation

Für weitergehende Ansprüche (Berücksichtigung von Artikelseiten, statischen Startseiten u.a.) kann man auf das Plugin Breadcrumb Navigation XT zurückgreifen.

Ausschließliche Anzeige der Einträge der aktuellen Kategorie

Meist sind Templatedateien so aufgebaut, dass auf einer Kategorieseite auch die Einträge der Unterkategorien angezeigt werden. Eine if-Abfrage in der Templatedatei category.php führt dazu, dass wirklich nur die Einträge der aktuellen Kategorie zu sehen sind.

Als Alternative bietet sich z.B. das Plugin Cleancat an.

5 Antworten

  1. Nimue sagt:

    große klasse! ich bin mit der linkverwaltung in wordpress nicht so glücklich, ich werde auf deine idee zurückgreifen.. vielen dank!

  2. micha sagt:

    Mich würde die Funktion correct_count() interessieren, Kannst du dazu näheres schreiben? Gibt es die Funktion irgendwo zum Download?

  3. Matthias sagt:

    Tut mir leid, ist nicht wirklich in einer veröffentlichungsreifen Form 🙂 Man muss die Funktion list_cats erweitern:

    $count = intval($category->category_count);
    $count += improved_count($categories,$category->cat_ID);

    Die Zählung der Einträge selbst ist dann eine einfache rekursive Funktion:

    function improved_count ($categories,$child_of=0,$count=0) {
      foreach ($categories as $category) {
        if ($category->category_parent == $child_of) {
          count=$count
          + improved_count($categories,$category->cat_ID,$count);
          $count=$count+intval($category->category_count);
        } else {
        }
      }
      return $count;
    }

    Vielleicht hilft das als Anregung 🙂

  1. 17. September 2007

    […] Linkverzeichnis mit WordPress – Einführung « Blog Archiv « WordPress Für meinen privaten Zettelkasten. (tags: Tips&amp;Trix Inspiration) […]

  2. 28. Juli 2009

    […] Linkverzeichnis mit WordPress […]

Schreibe einen Kommentar

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