wake-up-neo.net

Wie erhalte ich 1 neuesten Beitrag aus einer Abfrage für 5 Beiträge?

Ich habe also einen wp_query, der die 5 neuesten Beiträge von meiner Wordpress-Site abruft. Was ich tun möchte, ist, aus dieser Abfrage heraus den neuesten Beitrag zu nehmen und diesen als eine Art 'Helden'-Beitrag anzuzeigen und dann die anderen 4 Beiträge zu übernehmen (könnte mehr als 4 sein, wenn ich die Abfrage zu einem späteren Zeitpunkt ändere ) und in einer Liste oder einem Gitter unterhalb dieses Heldenposts anzeigen.

Hier ist mein bisheriger Abfragecode (offensichtlich vereinfacht):

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

Sie können die $current_post -EIGENSCHAFT VON WP_Query verwenden.

$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

Wenn Sie Ihre Abfrageargs wie folgt ändern, werden Ihre Posts nach Änderungsdatum sortiert.

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

Sie können dann eine einfache if else-Bedingung innerhalb der Schleife verwenden und den ersten Beitrag als Helden und die verbleibenden darunter ausdrucken.

1
sri

Ein einfacher boolean-Trigger erledigt die Aufgabe.

<?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>';
        }
    } 
}
?>

Verwenden Sie dann die Klasse .post.first, um die Dinge anders zu gestalten. Sie können auch unterschiedliche Inhalte, unterschiedliche Reihenfolge/Klassen des Inhalts, unterschiedliche Bildgrößen usw. laden.

0
Eric Holmes