WP_Query pentru primele două postări recente, apoi o altă buclă pentru următoarele trei
Scopul meu final este să listez ultimele 5 postări, indiferent de categorie.
Mai întâi, aș dori să creez un WP_Query
pentru a obține ultimele două postări și să le inserez într-o structură HTML specifică.
Apoi, aș dori să creez un alt WP_Query
pentru a obține următoarele trei postări și să le inserez într-o structură HTML diferită.
Am încercat câteva fragmente de cod și ceea ce se întâmplă este că fiecare WP_Query
începe de la ultima postare în ambele structuri HTML. Există vreun argument pe care îl pot folosi pentru a specifica celei de-a doua interogări să sară peste primele două postări?

Execută un wp_query pentru post_per_page = 2 și obține ID-urile acestor 2 postări într-un array pentru a fi excluse în următoarele 3 postări necesare
<?php
// Interogarea
$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 );
// Bucla
if ( $the_query->have_posts() ) {
$not_in_next_three = array();
while ( $the_query->have_posts() ) {
$the_query->the_post();
//aici html-ul tău pentru ultimele 2
$not_in_next_three[] = get_the_ID();
}
} else {
// nicio postare găsită
}
/* Restaurare date Post originale */
wp_reset_postdata();
Acum array-ul creat mai sus va fi exclus în wp_query care preia următoarele 3 postări
// Interogarea
$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 );
// Bucla
if ( $next_the_query->have_posts() ) {
while ( $next_the_query->have_posts() ) {
$next_the_query->the_post();
//aici html-ul tău pentru următoarele 3
}
} else {
// nicio postare găsită
}
/* Restaurare date Post originale */
wp_reset_postdata();
?>

Adaugă o explicație la codul și metoda pe care le folosești. Acest lucru poate fi realizat clar într-un singur query, nu 2

Da, poate fi realizat într-un singur query.. dar proprietarul întrebării a cerut 2 wp_query.. de aceea...

Am rezolvat această problemă efectuând două interogări WP_Query pe aceeași pagină și folosind un parametru de offset în cel de-al doilea set de argumente.
Aș dori să știu cum să folosesc o singură interogare și să obțin același rezultat.

Puteți utiliza parametrii de paginare ai WP_Query
.
Cu toate acestea, utilizarea a două interogări pentru a realiza acest obiectiv este ineficientă. O soluție mai bună este să folosiți o singură interogare și să modificați marcajul în funcție de valoarea proprietății $current_post
din WP_Query
, care (când este utilizată în buclă) reflectă indexul postării în curs de procesare în cadrul paginii curente de rezultate.
