Voici la requête que j'ai utilisée.
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$wp_query = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=6&paged=' . $paged); ?>
Est-il possible de sauter les 3 premiers articles uniquement dans la première page (? Paged = 1) et non les autres pages (? Paged = 2 ....).
Pour ignorer la publication, utilisez simplement le paramètre offset dans wp_query.
Pour afficher les trois derniers articles:
<?php
$latestpost = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=3');
//Here add loop to display posts like
while($latestpost->have_posts()) : $latestpost->the_post();
the_title();
the_content();
endwhile; wp_reset_query();
//After that skip three posts using offset
$latestpost = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=6&offset=3&paged=' . $paged);
the_title();
the_content();
endwhile; wp_reset_query();
?>
C'est tout
Eh bien, je viens de suivre cette méthode et d'y apporter quelques modifications ...
// in functions.php
$mega = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=3');
//set the posts per page to 3 so the id's of the first 3 posts will be shown
$ids = array();
while ($mega->have_posts()) : $mega->the_post();
$ids[] = get_the_ID();
endwhile;
Après cela, nous passons à la boucle principale pour sauter les trois premières boucles de la boucle qui ont changé un peu.
$args= array(
'post_type' => 'post',
'posts_per_page' => 6,
'paged' => $paged,
'order'=> 'asc',
'orderby'=> 'meta_value',
'meta_key'=>'date',
'post__not_in' => $ids
);
$wp_query = new WP_Query($args);
Et ça marche comme je le voulais ..
En utilisant le paramètre offset: https://codex.wordpress.org/Class_Reference/WP_Query#Pagination_Parameters
$wp_query = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=6&offset=3&paged=' . $paged); ?>
Au lieu d'utiliser l'attribut offset
, avez-vous pensé à créer un var avec une valeur de 1 qui est incrémenté dans la boucle. Si la boucle si moins de 4 ne fait rien, sinon
<?php
$p=1;
while ( have_posts() ) : the_post();
if($p > 3) {
?>
// DO STUFF
Cela ne résout pas le problème, mais vous pourrez peut-être définir une condition selon laquelle s'il s'agit de la première page, ignorez les 3 premières?