La fonction

Celle-ci est à placer dans functions.php.


function my_random_posts() {

    $args = array(
        'post_type' => 'post',
        'orderby' => 'rand',
        'posts_per_page' => 5,
    );

    $the_query = new WP_Query( $args );

    if ( $the_query->have_posts() ) {

        $string .= '<ul>';
        while ( $the_query->have_posts() ) {
            $the_query->the_post();
            $string .= '<li><a href="'. get_permalink() .'">'. get_the_title() .'</a></li>';
        }
        $string .= '</ul>';
        /* Essayez d'enlever la fonction ci-dessous pour voir */
        wp_reset_postdata();
    } else {

        $string .= 'Aucun article trouvé';
    }

    return $string;
}

Intégration

Dans un fichier .php

On appelle simplement la fonction à l’endroit où l’on veut voir apparaître nos articles aléatoires :

<?php echo my_random_posts(); ?>

Shortcode

On voudra peut-être placer ses articles aléatoires dans une sidebar par exemple… Le shortcode est alors tout indiqué.

Pour utiliser la fonction sous forme d’un shortcode, il suffit de rajouter ces deux lignes après la fonction :

function my_random_posts() {

// ...

}

add_shortcode('random_posts','my_random_posts');
add_filter('widget_text', 'do_shortcode');

Plus qu’à insérer le shortcode :

[random_posts]

Annexes

Source de l’image : www.creatinglifeasyougo.com/

Source de l’article (EN) : www.wpbeginner.com/wp-tutorials/how-to-display-random-posts-in-wordpress/

wp_reset_postdata dans le codex wordpress