Auch Entwickler brauchen Platz zum Spielen

21. Oktober 2012 /

Related Posts by Category: Ähnliche Beiträge einer Kategorie

Related Posts by Category sucht nach themenrelevanten Beiträgen innerhalb der aktuellen Kategorie und listet diese mit zahlreichen Optionen gruppiert auf.

Für Apfelzeug, das junge Magazin für Apple, hatte ich mir ein WordPress-Plugin gewünscht, welches themenrelevante Artikel innerhalb des Blogs ausfindig macht und diese als gegliederte Liste darstellt. An das Tool gestellte Voraussetzungen waren nicht übertrieben: Extreme Performanz, keine zusätzlichen Speichermanöver, keine Volltextsuche auf der Datenbankebene. Die Anzahl der Kandidaten gleicht Null – aus diesem Grund die Eigenentwicklung: Related Posts by Category für WordPress.

Kategorie als Kriterium für Relevanz
Das WordPress-Plugin Related Posts by Category listet ähnliche Beiträge eines beliebigen Artikels auf. Als Suchfaktor verwendet das Plugin nicht den Beitragstitel und auch nicht die Gewichtung des Inhalts. Vielmehr dient die Kategorie, die dem aufgerufenen Beitrag zugewiesen wurde, als Quelle der Übereinstimmung. Der Grund: Posts aus der äquivalenten Kategorie sind in der Regel identischer Thematik und können daher als absolut relevant angesehen werden. Ist ein Artikel in mehreren Kategorien untergebracht, werden diese auch für die einzige Datenbankabfrage genutzt, was seinerseits die Anzahl der Ergebnisse steigert.

Sprungmarken

Features

  • Ausgabe des zum Beitrag passenden Bildes (Post Thumbnail)
  • Schnelle Abfrage in nur einem SQL-Statement
  • Anzahl der Ergebnisse und weitere Optionen einstellbar
  • Kinderleichte Inbetriebnahme des Plugins
  • WordPress 2.8 vorausgesetzt

Funktionsweise
Nach dem Aufruf folgender PHP-Funktion mit justierten Parametern (mögliche Werte weiter unten) aus dem Template heraus, gibt das aktivierte Plugin eine Liste mit verwandten Beiträgen aus.

Schnipsel zum Copy&Paste

<ul>
  <?php do_action(
    'related_posts_by_category',
    array(
      'orderby' => 'post_date',
      'order' => 'DESC',
      'limit' => 5,
      'echo' => true,
      'before' => '<li>',
      'inside' => '&raquo; ',
      'outside' => '',
      'after' => '</li>',
      'rel' => 'nofollow',
      'type' => 'post',
      'image' => 'thumbnail',
      'message' => 'Keine Treffer'
    )
  ) ?>
</ul>

Beispiel mit verfügbaren Parametern

<ul>
  <?php do_action(
    'related_posts_by_category',
    array(
      'orderby' => 'post_title',
      'order' => 'ASC',
      'limit' => 4,
      'echo' => true,
      'before' => '<li>',
      'inside' => '&raquo; ',
      'outside' => '',
      'after' => '</li>',
      'rel' => 'follow, noindex',
      'type' => 'post',
      'image' => 'medium',
      'message' => 'Keine Treffer',
      'default' => '/pfad/bild.png',
      'hidden' => 'image',
      'exclude' => '12, 6, 8'
    )
  ) ?>
</ul>

Die möglichen Parameter im Detail erklärt:

  • orderby
    Der Parameter orderby beinhaltet den Spaltennamen, nach dem die Ausgabe sortiert werden soll. Welche Spalten verwendet werden können, kann der WordPress-Tabellenbeschreibung entnommen werden. Für eine zufallsgenerierte Ausgabe ist der Wert RAND zuständig.
  • order
    Mit ASC für aufwärts und DESC für abwärts als Wert wird die Richtung der Sortierung bestimmt. Nur in Verbindung mit orderby.
  • limit
    Limit begrenzt die Anzahl der gefundenen Einträge.
  • echo
    TRUE gibt das Resultat im laufenden HTML-Quelltext aus, im anderen Fall wird es als String $GLOBALS['RPBC']->output für die Weiterverarbeitung zwischengespeichert.
  • before, inside, outside, after
    XHTML-Tags oder einfach nur Zeichen, die entsprechend vor, im und nach dem erzeugten Link eingefügt werden.
    Das Format: %before<a>%inside Link %outside</a>%after
  • rel
    Der an die Funktion übergebene Wert wird im REL-Tag des Ankers verwendet, um die Links z.B. als nofollow oder Archiv zu kennzeichnen.
  • type
    Ist der Wert leer, werden auch Unterseiten (statische Seiten) berücksichtigt. post als Parameter gibt nur Beiträge, page dagegen nur Pages als Output aus.
  • message
    Standard-Text als Ausgabe, falls keine Treffer gefunden wurden.
  • image
    Stellt das zum jeweiligen Beitrag zugehörige Bild dar: Post Thumbnail (ab WordPress 2.9), alternativ erstes Bild des Beitrags. Mögliche Werte: full, thumbnail, medium, large oder array(w, h) mit gewünschten Bildabmessungen (w = Breite, h = Höhe).
  • default
    Absoluter Pfad zu einem Standardbild, welches immer dann gezeigt wird, wenn Beiträgen kein Thumbnail zugewiesen wurde. Dem Default-Bild wird die CSS-Klasse rpbc_default zugewiesen, um Formatierungen anwenden zu können.
  • hidden
    Unterdrückt die Ausgabe des Titels (Wert title), aber auch des Bildes (Wert image). So können nur Thumbnails ohne Beitragstitel gezeigt werden.
  • exclude
    Ausschluss bestimmter Kategorien durch die Angabe von Komma-separierten IDs als Parameter. Exemplarich: 'exclude' => '13, 3',

Beispiel
Ein funktionierendes Beispiel mit ähnlichen Artikeln zu diesem Beitrag befindet sich weiter unten auf dieser Seite zwischen dem eigentlichen Beitrag und den Kommentaren.

Versionsverlauf
Version 0.9.1 vom 06.06.2011:

  • Bugfix für Artikeltitel mit einer Zahl am Anfang

Version 0.9 vom 03.02.2011:

  • Zusätzliche Sicherheitsprüfung und Bereinigung der Attribute
  • Mindestvoraussetzung: Erhöhung der WordPress-Version auf 2.8

Version 0.8 vom 16.12.2010:

  • Ausschluss bestimmter Kategorien mithilfe von exclude

Version 0.7 vom 16.11.2010:

  • Default-Image bei nicht vorhandenen Thumbnails (siehe Doku oben)
  • Bereinigung des Quelltextes
  • Hinzufügen der Sprachdatei

Version 0.6 vom 08.03.2010:

  • Einbindung im Template via Hook (do_action)

Version 0.5 vom 16.12.2009:

  • Neuauflage des Codes
  • Darstellung der Thumbnails
  • Rückwärtskompatibilität

Version 0.4 vom 08.11.2009:

  • Zusätzliche Sicherheitsabfragen für die abgesetzte DB-Query

Version 0.3 vom 08.07.2008:

  • Zufallsgenerierte Ausgabe der Ergebnisse mit orderby => ‘RAND’

Version 0.2 vom 07.05.2008:

  • Option für Post-Type hinzugefügt. Mögliche Werte: post|page

Version 0.1 vom 15.02.2008:

  • WP-Plugin Related Posts by Category geht online

Installation

  • Plugin downloaden
  • ZIP-Archiv entpacken
  • Datei related_posts.php ins Verzeichnis ../wp-content/plugins/ hochladen
  • Reiter Plugins aufrufen
  • Plugin Related Posts by Category aktivieren
  • single.php um den PHP-Aufruf related_posts_by_category(…) (siehe Beispiel und mögliche Parameter oben) erweitern

Download
› WordPress Plugin Related Posts by Category ↓

Sergej Müller

[Der Autor]Sergej Müller ist enthusiastischer Software Engineer mit Schwerpunkten Webentwicklung, Apps und WordPress. Seit 2007 programmiert und vertreibt er wpSEO, das zugkräftige SEO-Plugin für WordPress-Blogs.

Thematisch ähnliche Beiträge