WP_Query per ottenere i primi due post più recenti, poi un altro loop per i successivi tre
Il mio obiettivo finale è elencare gli ultimi 5 post, indipendentemente dalla categoria.
Vorrei prima creare una WP_Query
per ottenere gli ultimi due post e inserirli in una specifica struttura HTML.
Poi vorrei creare un'altra WP_Query
per ottenere i successivi tre post e inserirli in una struttura HTML differente.
Ho provato alcuni frammenti di codice e quello che succede è che ogni WP_Query
inizia dall'ultimo post in entrambe le strutture HTML. C'è un argomento che posso utilizzare per dire specificamente alla seconda query di saltare i primi due post?

Esegui una wp_query per post_per_page = 2 e ottieni gli ID di questi 2 post in un array per escluderli nei successivi 3 post necessari
<?php
// La Query
$next_args = array(
'post_type' => '<your_post_type>',
'post_status' => 'publish',
'posts_per_page'=>2,
'order'=>'DESC',
'orderby'=>'ID',
);
$the_query = new WP_Query( $args );
// Il Loop
if ( $the_query->have_posts() ) {
$not_in_next_three = array();
while ( $the_query->have_posts() ) {
$the_query->the_post();
//qui il tuo html per gli ultimi 2
$not_in_next_three[] = get_the_ID();
}
} else {
// nessun post trovato
}
/* Ripristina i dati originali del Post */
wp_reset_postdata();
Ora l'array creato sopra verrà escluso nella wp_query che recupera i successivi 3 post
// La Query
$next_args = array(
'post_type' => '<your_post_type>',
'post_status' => 'publish',
'posts_per_page'=>3,
'order'=>'DESC',
'orderby'=>'ID',
'post__not_in'=>$not_in_next_three
);
$next_the_query = new WP_Query( $next_args );
// Il Loop
if ( $next_the_query->have_posts() ) {
while ( $next_the_query->have_posts() ) {
$next_the_query->the_post();
//qui il tuo html per i successivi 3
}
} else {
// nessun post trovato
}
/* Ripristina i dati originali del Post */
wp_reset_postdata();
?>

Aggiungi qualche spiegazione al tuo codice e al metodo che stai utilizzando. Questo può chiaramente essere fatto con una singola query, non 2

Sì, può essere fatto con una query.. ma il proprietario della domanda ha chiesto 2 wp_query.. ecco perché...

Ho risolto questo problema eseguendo due WP_Query sulla stessa pagina e utilizzando un parametro offset nel secondo set di argomenti.
Vorrei sapere come utilizzare una singola query e ottenere lo stesso risultato.

Puoi utilizzare i parametri di paginazione di WP_Query
.
Tuttavia, utilizzare due query per raggiungere questo obiettivo è inefficiente. Una soluzione migliore è utilizzare una singola query e modificare il markup in base al valore della proprietà $current_post
di WP_Query
, che (quando utilizzata nel loop) riflette l'indice del post attualmente in elaborazione all'interno della pagina corrente dei risultati.
