WordPress Theme erweitern und programmieren
WordPress & Co

Ähnliche Posts in deinem Blog anzeigen

Es ist ja immer eine gute Idee Beiträge in deinem Blog zu verlinken. Auch ich mache das immer wieder. Doch ideal wäre doch, wenn du thematisch verwandte Posts anzeigen könntest. Natürlich dafür gibt es fertige Plugins, aber wenn du es selber mit einem kurzen Code erledigen kannst ist es auch nicht so schlecht. Besonders kannst du mit diesem Code genau festlegen, bei welchen Seiten, Post-Arten, oder ähnlichem du den ähnlichen Beiträge anzeigen willst.

Bevor du loslegst mit dem Programmieren

Solltest du dir ein Child-Theme anlegen. Dieses mal musst du dir aber vom Haupttheme die Dateien kopieren, in denen du den Code einfügen willst. Normalerweise wird dies die Datei single.php sein. Diese kannst du dann öffnen und irgendwo am Ende das Snippet reinkopieren. Wo genau kann ich dir leider nicht sagen, denn ich kenne die Struktur deines Themes nicht. Doch es wird irgendwo in den letzten Zeilen vor einem schließenden </div>-Element sein.

Der Quellcode für die ähnlichen Posts

Nun kommt das Snippet für deine ähnlichen Posts. Je nach dem welche Ähnlichkeitsmerkmale du verwenden willst, musst du die Zeilen 1 und 2 anpassen. Im Moment werden die Schlagwörter als Merkmal verwendet. Wenn du in der ersten Zeile am Anfang zwei Schrägstriche einfügst und dafür die zwei von der zweiten Zeile löscht, werden die Kategorien als Basis verwendet.
Zusätzlich kannst du auch festlegen wie viele Posts ausgegeben werden sollen. Dazu änderst du die Zahl 5 in Zeile 3 ab. Setze einfach eine sehr große Zahle, beispielsweise 9999 ein, damit alle Posts ausgegeben werden.
Dann kannst du noch die Zeilen 14 und 15 anpassen. Damit legst du fest ob eines der Merkmal des aktuellen Post zu den ähnlichen Posts übereinstimmen soll, oder alle Einträge gleich sein müssen. Hier gehst du mit den Schrägstrichen gleich wie beiden ersten beiden Zeilen vor.

  $tagName   = "post_tag";  //Die Tags/Schlagwoerter vergleichen
  //$tagName = "category";  //Die Kategorien der Posts vergleichen
  $maxPosts  = 5;           //Die ersten 5 aehnlichen Posts ausgeben

  $terms    = get_the_terms( $post->ID , $tagName, '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' => $tagName,
                                                             'field' => 'id',
                                                             'terms' => $term_ids,
                                                             'operator' => 'IN'     // Eine Uebereinstimmung muss existieren
                                                             //'operator' => 'AND'  // Alle muessen vorhanden sein
                                                             )),
                        'date_query'          => array(
                        'after'               => date('Y-m-d', strtotime('-1 year'))));
  $related_query = new WP_Query($related_args);

  $retVal = '';
  $i = 1;
  if ($related_query->have_posts()) {
    $retVal .= '<h3>Themenrelevante Artikel</h3>';
    $retVal .= '<ul class="tmdn-similar-posts">';
    while ($related_query->have_posts() && $i <= $maxPosts) {
      $related_query->the_post();
      $retVal .= '<li class="post-item">'.get_the_title().'</li>';
      $i++;
    }
    $retVal .= '</ul>';
    wp_reset_postdata();
  }
  echo $retVal;
Hinterlasse eine Antwort

Deine eMail-Adresse wird nicht veröffentlicht. Pflichtfelder sind mit * markiert.