web-dev-qa-db-fra.com

'paged' dans wp_query ne fonctionne pas

J'essaie d'ajouter un code à mon wordpress afficher les articles précédents (dans une page précédente). J'essaie ce code mais cela ne fonctionne pas:

<?php
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$args = array(
    'offset' => 1,
    'cat' => -22,
    'paged'=>$paged
);
$recent = new WP_Query($args);
while($recent->have_posts()) : $recent->the_post();
// here some code to view
<?php endwhile; ?>
<div class="navigation"><p><?php posts_nav_link('&#8734;','next page','previous page'); ?></p></div>
<?php wp_reset_query(); ?>

ça ne marche pas dans http://mydomain.com/page/2

1
Ehsan

Vous définissez offset param, donc paged param est ignoré;)

Du Codex:

offset (int) - nombre de messages à déplacer ou à passer. Avertissement: la définition du paramètre de décalage remplace/ignore la pagination

Si vous souhaitez ignorer la publication la plus récente de cette requête, vous pouvez le faire de deux manières.

1. Pagination personnalisée.

$ppp = get_option('posts_per_page');  // or any other method to get your posts_per_page

$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$args = array(
    'offset' => 1 + ( $paged * $ppp ),
    'cat' => -22,
    'paged'=>$paged
);

2. Ignorez le premier message

$most_recent_post_id = ...;  // get the ID of most recent post
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$args = array(
    'post__not_in' => array($most_recent_post_id),
    'cat' => -22,
    'paged'=>$paged
);
4
Krzysiek Dróżdż