Zur Suche springen Zur Navigation springen Zum Hauptinhalt springen Zum Footer springen

In vielen Blogs werden themenverwandte bzw. ähnliche Artikel neben oder unter einem Beitrag angezeigt. Das führt i.d.R. dazu, dass die Besucher der Website sich von einem Beitrag zum nächsten bewegen, mehr Unterseiten aufrufen und länger auf der Website verweilen.

Es gibt verschiedene Möglichkeiten ähnliche Beiträge in WordPress anzuzeigen – darunter auch viele Plugin-Lösungen. In diesem Artikel archivieren wir ein WordPress-Snippet, das euch ermöglicht ähnliche Beiträge anhand übereinstimmender Taxonomien (Kategorien, Schlagworte oder benutzerdefinierte Taxonomien) zu identifizieren und anzuzeigen.

Schulungen von kulturbanause

Intensive Trainings mit hohem Praxisbezug.

Ähnliche Beiträge mit Hilfe von Taxonomien ausgeben

Die themenverwandten Beiträge zeigen wir mit Hilfe eines zusätzlichen Loops an. Das folgende Snippet nutzt einen WP_Query mit angepassten Argumenten und einem sog. tax_query, der Beiträge anhand der Taxonomie filtert. Ersetzt den Platzhalter »TAXONOMYNAME« an beiden Stellen mit dem Namen der Taxonomie, die verwendet werden soll um themenverwandte Beiträge zu identifizieren. Wenn ihr die Standard-Schlagwörter von WordPress als Taxonomie nutzen wollt, ist tragt ihr post_tag ein. Wenn ihr die Standard-Kategorien nutzen wollt category.

Mit Hilfe des operators kann festgelegt werden, ob nur ein übereinstimmender Taxonomie-Wert ausreicht, um den Artikel als themenrelevant einzustufen (IN) oder ob alle Taxonomie-Werte übereinstimmen müssen (AND). Der zusätzliche date_query verhindert, dass Beiträge angezeigt werden, die älter als ein Jahr sind.

Fügt folgendes Snippet an der Stelle ein, an der die themenverwandten Beiträge erscheinen sollen. Im Beispiel wird jeweils nur der Titel angezeigt.

<?php

$terms = get_the_terms( $post->ID , 'TAXONOMYNAME', 'string');
$term_ids = wp_list_pluck($terms,'term_id');

$related_args = array(
  'post_type' => 'post',
  'post__not_in' => array($post->ID),
  'ignore_sticky_posts' => 1,
  'tax_query' => array(
    array(
      'taxonomy' => 'TAXONOMYNAME',
      'field' => 'id',
      'terms' => $term_ids,
      'operator' => 'IN' // 'AND'
    )
  ),
  'date_query' => array(
    'after' => date('Y-m-d', strtotime('-1 year'))
  )
);

$related_query = new WP_Query( $related_args );

if ( $related_query->have_posts() ) {
  echo '<h3>Themenrelevante Artikel</h3>';
  echo '<ul>';
  while ( $related_query->have_posts() ) {
    $related_query->the_post();
    echo '<li>' . get_the_title() . '</li>';
  }
  echo '</ul>';
  wp_reset_postdata();
} 

?>

Geschrieben von kulturbanause Team

thumb

Beiträge bei denen das kulturbanause-Team als Autor angegeben ist, wurden von mehreren Personen in Zusammenarbeit geschrieben. Wir nutzen diesen Blog als öffentliches Archiv und um euch bei alltäglichen Problemen im Zusammenhang mit der Erstellung von Websites zu helfen. Neben diesem Blog bieten wir auch Trainings wie Schulungen, Bücher oder Videos an. Und natürlich unterstützen wir auch gerne im Rahmen unserer Agenturtätigkeit.

Feedback & Ergänzungen – 12 Kommentare

  1. Maykay
    schrieb am 19.01.2017 um 03:36 Uhr:

    Sehr interessant. Auch im Hinblick darauf, dass man aus Gewohnheit viel zu viele Plgins nutzt.

    Antworten
  2. Daniel
    schrieb am 26.12.2016 um 15:02 Uhr:

    Danke für den guten Tipp. Es ist sehr nutzbar

    Antworten
  3. Thorsten
    schrieb am 28.10.2016 um 11:55 Uhr:

    Vielen Dank für deine Hilfe! Leider erhalte ich dann immer noch den Fehler Fatal error.
    (Fatal error: Uncaught Error: Cannot use object of type WP_Error as array in /www/htdocs … )
    Die Vergleichszeichen (größer/kleiner-als-Zeichen)habe ich selbstverständlich geändert.

    „WTF“ wie wahr.

    Im übrigen, die Plugin-Lösung (YARPP) funktioniert tadellos.

    Antworten
    • Thorsten
      schrieb am 28.10.2016 um 12:40 Uhr:

      Sorry, funktioniert doch. Ich habe dieses mal vergessen ‚TAXONOMYNAME’zu ändern.
      Vielen Dank nochmals Robert!

      Antworten
      • Robert
        schrieb am 28.10.2016 um 21:00 Uhr:

        Bitte, gerne.

  4. Robert
    schrieb am 28.10.2016 um 10:48 Uhr:

    WTF
    echo '[a href="' . get_permalink() . '"]' . get_the_title() . '[/a]'

    musst die [] durch ersetzen.

    Antworten
  5. Robert
    schrieb am 28.10.2016 um 10:46 Uhr:

    Mist, hat den Code nicht richtig übernommen, noch mal:

    echo 'Themenrelevante Artikel';
    echo '';
    while ( $related_query->have_posts() ) {
    $related_query->the_post();
    echo '' . get_the_title() . '';
    }
    echo '';

    Antworten
  6. Thorsten
    schrieb am 27.10.2016 um 13:46 Uhr:

    Hallo, ich habe das Snippet in die single.php eingefügt und es werden auch weitere Posts angezeigt, jedoch enthalten diese keinen Links zu den Beiträgen. Was kann ich da machen?

    Antworten
    • Robert
      schrieb am 27.10.2016 um 21:18 Uhr:

      Z.b. mit der Funktion the_permalink()

      Antworten
      • Thorsten
        schrieb am 28.10.2016 um 08:24 Uhr:

        Hallo Robert, danke für den Hinweis. Da ich mich damit nicht auskenne, habe ich mich nun Stundenlang durchgelesen und ausprobiert. Leider erhalte ich immer Fehlermeldungen wie Parse error oder Fatal error. Wie trage ich die Funktion nun korrekt ein?

      • Robert
        schrieb am 28.10.2016 um 10:45 Uhr:

        Versuche mal das hier:

        echo ‚Themenrelevante Artikel‘;
        echo “;
        while ( $related_query->have_posts() ) {
        $related_query->the_post();
        echo ‚‚ . get_the_title() . ‚‚;
        }
        echo “;

  7. Robert
    schrieb am 26.10.2016 um 11:19 Uhr:

    Hi, danke für diesen hilfreichen Tipp. Ich würde darüber hinaus gerne wissen:
    Kann ich statt der Kategorie ODER Tag als 'TAXONOMYNAME' auch einfach ein Array angeben? Also 'taxonomy' => array( 'category', 'post_tag' ),?
    Ist es auf einfachem Wege möglich, die Ergebnisse nach der Anzahl der Übereinstimmungen zu sortieren und entsprechend auszugeben?

    Antworten

Schreibe einen Kommentar zu Daniel Antworten abbrechen

Wir freuen uns über Anregungen, Ergänzungen oder Hinweise zu Fehlern. Wir lesen jeden Eintrag, veröffentlichen aber nur, was den Inhalt sinnvoll ergänzt.

WordPress-Projekte mit kulturbanause

Wir wissen wovon wir reden. Wir setzen WordPress seit über 10 Jahren erfolgreich ein und realisieren maßgeschneiderte Websites auf Basis dieses großartigen CMS.

WordPress-Leistungsangebot →

Schulungen von kulturbanause

Wir bieten Seminare und Workshops zu den Themen Konzept, Design und Development. Immer up-to-date, praxisnah, kurzweilig und mit dem notwendigen Blick über den Tellerrand.

Übersicht Schulungsthemen →