web-dev-qa-db-ja.com

5件の投稿に対するクエリから最新の1件の投稿を取得する方法を教えてください。

だから私は私のWordpressのサイトから最新の5つの投稿を得ているwp_queryを持っています。私がしたいのは、このクエリ内から、最新の投稿を入手して、これを一種の「ヒーロー」投稿として表示してから、他の4つの投稿を表示することです)とこのヒーローの記事の下にリストまたはグリッドで表示します。

これが私の問い合わせコードです(明らかに単純化されています):

<?php 

$query_args = array(
    "posts_per_page" => "5"
);

$listedPosts = new WP_Query($query_args);

// the loop

if ( $listedPosts->have_posts() ) {
    while ( $listedPosts->have_posts() ) {
        $listedPosts->the_post();
        // loop content for hero post goes here (I need to get the most recent post).
    } 
}

// how would I show the other remaining posts in the query?

?>
1
Tom Oakley

$current_postWP_Queryプロパティを使用できます

$query_args = array(
    "posts_per_page" => "5"
);

$listedPosts = new WP_Query($query_args);

// the loop

if ( $listedPosts->have_posts() ) {
    while ( $listedPosts->have_posts() ) {
        $listedPosts->the_post();
        if ( (int) $listedPosts->current_post === 0 ) {
          // loop content for hero post
        } else {
          // loop content for remaining posts
        }
    } 
}
6
gmazzap

クエリ引数を以下のように変更すると、投稿は変更日順に並べられます。

$query_args = array(
    "posts_per_page" => "5",
    "orderby" => "modified",
    "order" => "DESC"
);

そうすれば、ループ内で単純なif else else条件を使用して、最初の投稿を主人公として、残りをその下に表示することができます。

1
sri

単純なbooleanトリガがその仕事をします。

<?php 

$query_args = array(
    "posts_per_page" => "5"
);

$listedPosts = new WP_Query($query_args);

// the loop

if ( $listedPosts->have_posts() ) {
    $first_post = true;
    while ( $listedPosts->have_posts() ) {
        $listedPosts->the_post();
        if( $first_post ) {
            $first_post = false;
            echo '<div class="post first">';
                // loop content for hero post goes here (I need to get the most recent post).
            echo '</div>';
        } else {
            echo '<div class="post">';
                // Rest of the posts.
            echo '</div>';
        }
    } 
}
?>

それから.post.firstクラスを使用してさまざまなスタイルを設定します。さまざまなコンテンツ、コンテンツのさまざまな順序/クラス、さまざまな画像サイズなどを読み込むこともできます。

0
Eric Holmes