WordPress: Zufällige Artikel anzeigen (ohne Plugin)
Wie die Anzeige von ähnlichen Artikeln kann auch das Anzeigen von zufälligen Artikel die interne Verlinkung eures WordPress-Blogs verbessern und im optimalen Fall auch die Verweildauer eurer Besucher positiv beeinflussen.
In diesem Beitrag zeige ich euch, wie ihr in WordPress ganz einfach ohne Plugin zufällige Artikel anzeigen könnt. Dabei zeige ich auch, wie ihr die Auswahl der Artikel auf eine bestimmte Kategorie oder einen Zeitraum eingrenzen könnt.
Wie könnte das dann ausschauen?
Es wäre z.B. möglich die zufälligen Artikel inklusive Thumbnail in eurer Sidebar anzuzeigen:

Code zur Ermittlung der zufälligen Artikel
Fügt den folgenden Code in eure functions.php eures Themes:
function get_random_posts()
{
$random_posts = get_posts(
array(
'numberposts' => 3,
'orderby' => 'rand'
)
);
$output = '<ul id="articleList">';
foreach($random_posts as $post)
{
$post_title = $post->post_title;
$post_permalink = get_permalink($post->ID);
$thumbnail = get_the_post_thumbnail($post->ID, '40x40_thumb',
array(
'class' => '',
'alt' => trim(strip_tags($post_title)),
'title' => trim(strip_tags($post_title)),
)
);
$output .= '<li><a href="' . $post_permalink . '" title="Artikel: ' . $post_title . '">' . $thumbnail . '<span>' . $post_title . '</span><div class="clear"></div></a></li>';
}
return $output . '</ul>';
} Durch Aufruf der get_random_posts-Funktion erhaltet ihr eine Liste mit drei zufälligen Artikeln auf Basis aller von euch veröffentlichten Artikel.
Kurze Erklärung der Funktion
Zeile 3 - 8
Mit der WordPress-Funktion get_posts holen wir uns exakt 3 (siehe numberposts) Artikel. Bevor jedoch 3 Artikel ausgewählt werden, erzeugen wir eine zufällige Ordnung aller Artikel mittels orderby.
FROM (Zeile 10 - 27)
Hier erstellen wir uns unsere <ul>-Liste. Dabei "durchlaufen" wir alle 3 Artikel und erzeugen für jeden einzelnen Artikel einen Listenpunkt. Am Ende geben wir die erzeugte Liste mittels return zurück.
Code zum Anzeigen der zufälligen Artikel
An welcher Stelle in eurem WordPress-Theme ihr die zufälligen Artikel anzeigen möchtet, ist euch selbst überlassen. Für die Anzeige in der Sidebar könntet ihr folgenden Code z.B. in die sidebar.php eures Themes einfügen:
echo get_random_posts();Auswahl der zufälligen Artikel auf Basis einer Kategorie
Eventuell möchtet ihr die Auswahl der Artikel auf eine bestimmte Kategorie beschränken. Dafür müsst ihr nur der get_posts-Funktion einen weiteren Parameter namens cat übergeben:
$random_posts = get_posts(
array(
'numberposts' => 3,
'orderby' => 'rand',
'cat' => 6
)
);Dem Parameter weist ihr einfach die ID der entsprechenden Kategorie zu.
Auswahl der zufälligen Artikel auf Basis der letzten 30 Tage
Um bei der Auswahl nur einen bestimmten Zeitraum zu berücksichtigen, müssen wir wieder ein wenig tiefer in die Trickkiste greifen. Mit einem zusätzliche Parameter für die get_posts-Funktion ist das leider nicht getan.
Deshalb passt den Code in eurer functions.php wie folgt an:
add_filter('posts_where', 'random_posts_filter_where');
$random_posts = get_posts(
array(
'numberposts' => 3,
'orderby' => 'rand',
'suppress_filters' => false
)
);
remove_filter('posts_where', 'random_posts_filter_where'); Bevor wir get_posts aufrufen, teilen wir WordPress mit, dass zuvor ein Filter namens random_posts_filter_where aufgerufen werden soll.
Diesen fügt ihr vor die get_random_posts-Funktion in eure functions.php ein:
function random_posts_filter_where($where = '')
{
return $where .= ' AND post_date > "' . date('Y-m-d', strtotime('-30 days')) . '"';
}Diese Funktion bewirkt, dass bei der Auswahl der zufälligen Artikel nur Artikel berücksichtigt werden, die in den vergangenen 30 Tagen veröffentlicht wurden.
Fazit
Selbstverständlich gibt es für die Anzeige von zufälligen Artikel zahlreiche Widgets bzw. Plugins, aber es geht eben halt auch ohne, wie ihr in diesem Artikel gesehen habt.
Außerdem bietet die hier vorgestellte Lösung den Vorteil, dass ihr das erzeugte HTML-Markup und die Auswahl der Artikel selbst individuell nach euren Wünschen anpassen könnt. Bei den meisten Plugins ist das normalerweise immer nur eingeschränkt möglich.
- 20. Juni 2013
ursprüngliche Veröffentlichung in meinem ehemaligen Blog "Smart-Webentwicklung"