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