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:

Beispiel: Zufällige Artikel in WordPress anzeigen

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>';
}
PHP - Datei: functions.php

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();
PHP - Datei: sidebar.php

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
    )
);
PHP - Datei: functions.php

Dem Parameter weist ihr einfach die ID der entsprechenden Kategorie zu.

Tipp Auswahl durch weitere Parameter anpassen

Für die get_posts-Funktion gibt es noch viele weitere Parameter, um die Auswahl der Artikel zu beeinflussen. Nähere Informationen siehe WordPress-Dokumentation.

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');
PHP - Datei: functions.php

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')) . '"';
}
PHP - Datei: functions.php

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.

Aktualisierungshistorie:
  • 20. Juni 2013
    ursprüngliche Veröffentlichung in meinem ehemaligen Blog "Smart-Webentwicklung"
Feedback

Für Feedback zum Beitrag, seien es Fragen, Korrigierungen und/oder Anregungen, könnt ihr mir gerne eine Nachricht per E-Mail oder Mastodon schreiben (siehe Kontakt).