web-dev-qa-db-fra.com

Ignorer les 3 premiers messages dans wp_query

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 ....).

2
Megh Gandhi

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

3
Deepak kumar

http://www.smashingmagazine.com/2009/06/10-useful-wordpress-loop-hacks/#2-use-more-than-one-loop-on-a-page-without-printing-duplicate -des postes

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

1
Megh Gandhi

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); ?>
0
William C

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?

0
Aric Harris