kulturbanause Blog

Responsive Design, WordPress, Konzeption, HTML, CSS, JS & UX/UI …

WordPress: Themenverwandte Beiträge anzeigen (ohne Plugin)

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.

Workshops und Seminare von kulturbanause

Visual Prototyping, Responsive Design, CSS Grid & Flexbox, WordPress, Adobe XD, HTML & CSS Grundlagen, Website-Optimierung …

Jetzt Frühbucher-Rabatte sichern!

Ä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();
} 

?>

Jetzt bist du gefragt!

Hast du Anregungen, Ergänzungen, einen Fehler gefunden oder ist dieser Beitrag nicht mehr aktuell? Dann freuen wir uns auf deinen Kommentar.

Du kannst diesen Beitrag natürlich auch weiterempfehlen. Wir sind dir für jede Unterstützung dankbar!

Unterstützung bei WordPress-Projekten

Unsere WordPress Agentur ist auf die Entwicklung maßgeschneiderter WordPress-Themes und -Websites spezialisiert. Wenn du Unterstützung bei der Planung, Gestaltung und Entwicklung eines Projekts benötigst, helfen wir gerne weiter.
WordPress-Leistungsangebot →

Das könnte dich auch interessieren

12 Kommentare

  1. Robert

    Verfasst am 26. Oktober 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?

  2. Thorsten

    Verfasst am 27. Oktober 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?

    • Robert

      Verfasst am 27. Oktober 2016 um 21:18 Uhr.

      Z.b. mit der Funktion the_permalink()

      • Thorsten

        Verfasst am 28. Oktober 2016 um 8: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

        Verfasst am 28. Oktober 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 “;

  3. Robert

    Verfasst am 28. Oktober 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 '';

  4. Robert

    Verfasst am 28. Oktober 2016 um 10:48 Uhr.

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

    musst die [] durch ersetzen.

  5. Thorsten

    Verfasst am 28. Oktober 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.

    • Thorsten

      Verfasst am 28. Oktober 2016 um 12:40 Uhr.

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

      • Robert

        Verfasst am 28. Oktober 2016 um 21:00 Uhr.

        Bitte, gerne.

  6. Daniel

    Verfasst am 26. Dezember 2016 um 15:02 Uhr.

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

  7. Maykay

    Verfasst am 19. Januar 2017 um 3:36 Uhr.

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

Kommentar verfassen

Dieser Blog lebt vom Feedback der Besucher! Also los, mach mit!
Bitte habe Verständnis dafür, dass Kommentare die mit dem Inhalt dieses Beitrags nichts zu tun haben, gelöscht werden.