
Verwandte Artikel anzuzeigen, kann sehr sinnvoll sein: Suchmaschinen freuen sich über die verbesserte interne Linkstruktur und Besucher bleiben länger auf der Seite, weil sie vielleicht noch einige andere interessante Beiträge finden.
Diese verwandten Beiträge sollte man daher unter jedem Beitrag anzeigen.
Für diesen Zweck gibt es jede Menge nützlicher Plugins. Doch weil wir wissen, dass Plugins eine WordPress-Installation nur langsamer und unsicherer machen, möchte ich heute einen Weg aufzuzeigen, mit dem man verwandte Beiträge ohne Plugin anzeigen kann.
Vorab: Die Idee stammt nicht von mir, ich selbst habe sie hier gefunden. Ich möchte diese nette Funktion nur ein wenig weiterverbreiten und erklären.
<?php
//Verwandte Beitraege durch Tags finden und anzeigen
$tags = wp_get_post_tags($post->ID);
if ($tags) {
echo 'Related Posts';
$first_tag = $tags[0]->term_id;
$args=array(
'tag__in' => array($first_tag),
'post__not_in' => array($post->ID),
'showposts'=>5,
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
<?php
endwhile;
}
}
?>
Dieser Codeschnippsel sucht zum Artikel passende andere Artikel, in dem er den ersten Tag des Beitrags “notiert” und sich dann die Beiträge heraussucht, die ebenfalls diesen ersten Tag haben.
Das Ergebnis dieser Suche wird dann als Linkliste ausgegeben.
Zwar liefert diese Umsetzung nicht immer ein Ergebnis, sie ist aber eine einfache Möglichkeit um verwandte Beiträge anzuzeigen.
Ich nutze sie insbesondere deshalb so gern, weil man in der Darstellung der Ergebnisliste keinesfalls beschränkt ist: Ich selbst zeige neben den Ergebnis immer auch die Artikelbilder an.
Bild: Mathias Korte
15 Kommentare zu "Verwandte Artikel ohne Plugin anzeigen"
Hallo,
finde Deine Seite sehr informativ, da ich noch ziemlich neu dabei bin. Du hast hier leider nicht geschrieben wo der Code eingefügt werden muss/soll.
Bitte wo setze ich den denn ein? Hast Du mal ne Blondienen-Anleitung 😉
Danke im Vorraus für die Mühe.
Naja entweder baust du das als Funktion in deiner functions.php ein und rufst dann diese Funktion an der benötigten Stelle auf oder du fügst den Code in eine eigene Datei ein (sagen wir mal “related.php”), die kannst du über einen Include dann an jeder Stelle deines Themes einbinden.
Oder du schreibst eben diese Funktion selbst an jede Stelle, in der du sie benötigst. Aber das wäre wohl etwas umständlich…
Klingt nach einer wirklich guten Möglichkeit ohne Relatet Posts Plugin und Konsorten klarzukommen. Gut, diese Plugins bieten halt eine weit feinere Möglichkeit die Beiträge entsprechend relevant aufzuschlüsseln, weil mehr Tags berücksichtigt werden. Aber wie du sagtest können gerade diese Plugins verdammt an der Performance nagen, werde mal sehen ob ich das ganze nicht in die comments.php oder single.php einbauen kann. Da ich von PHP nahezu Null Ahnung habe erscheint es mir der leichteste Weg.
Grüße
Peter
Hallo,
ich bin auf dieser Seite auf die Thematik “related Post” aufmerksam geworden und finde es auch richtig, dass auf ein Plugin verzichtet wird. Dank dem oben beschriebenen Lösungsweges war es auch mir als PHP Neuling möglich, related posts anzuzeigen. Bei mir tritt jedoch ein Problem auf: Tags werden bei mir alphabetisch geordnet und so ist es oft dem Alphabet überlassen ob die Artikel, die angezeigt werden, nun passen oder nicht.
Kann ich die Sortierung der Tags im Backend irgendwie abschalten, damit ich Einfluss darauf habe, welcher Tag zuerst angezeugt wird, oder gibt es einen alternativen Code der dieses Problem umgeht?
Danke im Vorraus
Gruss Fabian
Hallo Fabian.
Ja, das müsste eigentlich klappen. Ich hoffe in den nächsten Tagen mal eine passende Lösung zu finden. Die poste ich dann hier. 😉
Sieht auf jedenfall schlicht aber schön aus. Werde mal ein wenig rumprobieren, aber irgendwie komm ich nie dazu “Related Posts” zu integrieren..
Hallo, ich habe jetzt versucht, den Code in meine Functions einzubinden und an einer Stelle in der single.php einzubinden. Leider hat dies nie funktioniert. Ich habe auch versucht, eine extra PHP-Datei anzulegen und diese per include einzubinden – war auch nichts. Könntest du bitte nochmal genau erklären, in welche Datei was eingebunden werden muss? Ich wäre dir sehr dankbar.
Das kommt tatsächlich direkt in die single.php. Bitte beachten: Die Ausgabe muss innerhalb des Loops erfolgen! Eigentlich sollte es dann klappen. 😉
Ich habe jetzt den Codeschnipsel genommen, vor das Ende der Schleife eingefügt (quasi vor dem end if) und es funktioniert immer noch nicht. Ist es wirklich nur, dass ich den Code von oben nehmen muss und in die single.php kopieren sollte oder ist es noch etwas anderes? Funktionen benennen, woanders aufrufen, einfügen, was auch immer? Für mich sprichst du ehrlich gesagt in kryptischer Sprache, vielleicht könntest du noch ein bisschen genauer werden.
Trackbacks zu diesem Artikel