Verwandte Artikel eines Artikels anzeigen

Hinweis: Dieser Artikel ist älter als zwei Jahre (letzte Änderung: 25. September 2008) und evtl. nicht mehr aktuell.

Wenn du dir gerne Verwandten Artikel (ähnlicher Inhalt wir durch die tagging-Funktion bestimmt) in der Ansicht einzelner Artikel darstellen lassen willst, kann WordPress das seit Version 2.3 über eine Funktion. Dafür hat Frank Bueltge eine kleine Funktion "<a href="http://bueltge.de/aehnliche-beitraege-mit-tag-funktion-wordpress-23/531/">related post</a>" geschrieben.

Lade dir einfach die functions.php herunter und speicher diese in deinem Theme-Ordner ab. Achtung: Falls dein Theme schon eine functions.php hat, darfst du diese nicht überspeichern. Schreibe einfach den Code der neuen Funktion

<?php
// related post with wordpress-tags
// wordpress > 2.3
function fbbl_get_related_posts() {
  global $wpdb, $post;

  $now = current_time('mysql', 1);
  $tags = wp_get_post_tags($post->ID);
  $taglist = "'" . str_replace("'", '', str_replace('"', '', urldecode($tags[0]->term_id))). "'";
  $tagcount = count($tags);

  if ( $tagcount > 1 ) {
    for ($i = 1; $i <= $tagcount; $i++) {
    $taglist = $taglist . ", '" . str_replace("'", '', str_replace('"', '', urldecode($tags[$i]->term_id))) . "'";
    }
  }

  $q = "SELECT DISTINCT p.*, count(t_r.object_id) as cnt FROM $wpdb->term_taxonomy t_t, $wpdb->term_relationships t_r, $wpdb->posts p WHERE t_t.taxonomy ='post_tag' AND t_t.term_taxonomy_id = t_r.term_taxonomy_id AND t_r.object_id = p.ID AND (t_t.term_id IN ($taglist)) AND p.ID != $post->ID AND p.post_status = 'publish' AND p.post_date_gmt < '$now' GROUP BY t_r.object_id ORDER BY cnt DESC, p.post_date_gmt DESC LIMIT 5;";

  return $wpdb->get_results($q);
}

function fbbl_related_posts(){

  if ( function_exists('get_the_tags') && (get_the_tags()) ) {
    $related_posts = fbbl_get_related_posts() ;
  }

  if ( $related_posts ) {
    foreach ($related_posts as $related_post ) {
      $related_post_output = '<li>';
      $related_post_output = $related_post_output . '<a href="' . get_permalink($related_post->ID) . '" title="' . wptexturize($related_post->post_title) . '">' . wptexturize($related_post->post_title) . ';
      $related_post_output = $related_post_output . '</a></li>';
      echo $related_post_output;
    }
  } else {
    echo '<li>' . __('Keine &auml;hnlichen Beitr&auml;ge') . '</li>';
  }
} ?>

mit in deine functions.php. Achte aber darauf, dass du dabei keine unnötigen Leerzeilen erstellst.

Somit ist die Funktion schon mal gepeichert. Jetzt fehlt nur noch ein Eintrag im single.php Template deines Themes an der Stelle im Loop wo du die Ausgabe haben möchtest:

<h3>Verwandte Artikel:</h3>
<?php if (function_exists('fbbl_related_posts')) : ?>
  <ul><?php fbbl_related_posts(); ?></ul>
<?php endif; ?>
Empfehle uns: email facebook google plus twitter

Artikel Informationen

  • Erstellt am Donnerstag, 25. September 2008 um 13:43 und abgelegt unter WordPress mit den Tags:
  • Kommentare zu diesen Eintrag im Kommentar Feed Feed.
  • Du kannst einen Kommentar hinterlassen. Pingback ist im Augenblick nicht erlaubt.

Hinterlasse einen Kommentar

  Abonnieren  
Benachrichtige mich zu: