web-dev-qa-db-fra.com

Comment puis-je choisir un seul poste parmi les 3 derniers?

Je souhaite afficher une publication sélectionnée parmi mes 3 dernières publications au hasard. Je suis parvenu à le mettre en place, en sélectionnant n'importe quel message au hasard, mais je souhaite le filtrer uniquement au dernier 3.

<?php

$args = array(
    'post_type' => 'post',
    'orderby' => 'Rand',
    'posts_per_page' => 1,
    'post_status'   => 'publish'
    );

$Rand_query = new WP_Query( $args );

if ( $Rand_query->have_posts() ) :
    while ( $Rand_query->have_posts() ) : $Rand_query->the_post();
?> 

// DIV FOR SINGLE FEATURED POST HERE // etc... 

De toute évidence, si je modifie posts_per_page en 3, j’obtiens 3 divs contenant les aperçus des publications en vedette. Je veux seulement le post choisi au hasard parmi les 3 derniers. Une requête de date ne fonctionnera pas car les posts ne sont pas réguliers.

1
adamdanw

Voici mon approche ...

Vous devez d'abord sélectionner les 3 derniers messages, puis choisir au hasard l'un d'entre eux ...

Mais il est plus facile de mélanger les publications sélectionnées que de n'en choisir qu'une seule. Ainsi, vous pouvez toujours utiliser la boucle normale:

<?php
    $args = array(
        'post_type' => 'post',
        'posts_per_page' => 3,
        'post_status'   => 'publish'
    );    
    $Rand_query = new WP_Query( $args );

    shuffle( $Rand_query->posts );

    if ( $Rand_query->have_posts() ) :
        while ( $Rand_query->have_posts() ) : $Rand_query->the_post();
?>

    // HERE GOES THE DIV WITH POST

<?php
            break;  // we want only one post to be shown, so we break the loop
        endwhile;
    endif;
?> 
5
Krzysiek Dróżdż