web-dev-qa-db-ja.com

最新の3つから1つの記事を選ぶにはどうすればいいですか?

最新の3件の投稿から1つの注目の投稿をランダムに表示することを目指しています。私はなんとか無事に任意の投稿を選び出して実行することに成功しましたが、私はそれを最新の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... 

明らかに、posts_per_pageを3に変更すると、注目の投稿プレビューを含む3 divが得られます。最後の3つからランダムに選ばれた1つの投稿だけが欲しいのですが、投稿は通常のものではないので日付クエリは機能しません。

1
adamdanw

これが私のアプローチです...

最初に最新の投稿を3つ選択してから、ランダムに投稿を選択してください...

ただし、選択した投稿を1つだけ選択するよりも簡単にシャッフルすることができます。その場合でも、通常のループを使用できます。

<?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