Le plugin WordPress PageNavi ne fonctionne pas sur category.php
J’ai un problème avec PageNavi
l’affichage de 126 pages (pour 126 articles – cette partie est presque correcte), mais au lieu de le décomposer par 10 (en attendant 13 pages), il affiche tous les articles de chaque page. Si je change 'numberposts' => 5
, il affiche le même 5.
Partie de code pertinente :
<?php wp_pagenavi(); ?>
<?php
$args = array( 'category' => 7, 'numberposts' => -1);
$allpost = get_posts( $args );
foreach($allpost as $post) : setup_postdata($post); ?>
<p class="datelist"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
<?php endforeach; ?>
<?php wp_pagenavi(); ?>
Je n’arrive pas à comprendre ce qui ne va pas.
Mise à jour (code complet) :
<?php
get_header();
?>
<div id="container">
<div id="content" role="main">
<h1>something</h1>
<?php
$args = array( 'category' => 7, 'numberposts' => -1);
$allpost = get_posts( $args );
foreach($allpost as $post) : setup_postdata($post); ?>
<p class="datelist"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
<?php endforeach; ?>
</div>
</div>
<?php get_footer(); ?>
Code de travail :
<?php get_header(); ?>
<div id="container">
<div id="content" role="main">
<h1>something</h1>
<?php
global $paged;
if (get_query_var( 'paged' ))
$my_page = get_query_var( 'paged' );
else {
if( get_query_var( 'page' ) )
$my_page = get_query_var( 'page' );
else
$my_page = 1;
set_query_var( 'paged', $my_page );
$paged = $my_page;
}
$args = array(
'cat=7',
'paged' => $my_page,
'posts_per_page' => 10
);
$my_query = new WP_Query( $args );
while ($my_query->have_posts()) : $my_query->the_post();?>
<p class="datelist"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
<?php endwhile;
wp_pagenavi( array( 'query' => $my_query ) );
wp_reset_query();
?>
</div>
</div>
<?php get_footer(); ?>
Solution n°1 trouvée
Lorsque vous utilisez get_posts
, vous effectuez une requête par vous-même et n’utilisez pas les variables de requête par défaut générées par WordPress. Le plug-in PageNavi ne fonctionnera pas immédiatement sur les boucles personnalisées.
Comme indiqué par rbaier4, vous devez utiliser la paged
variable. Veillez à ne pas mélanger la boucle par défaut avec vos éléments personnalisés et à réinitialiser les variables une fois que vous avez terminé.
global $paged;
if (get_query_var( 'paged' ))
$my_page = get_query_var( 'paged' );
else {
if( get_query_var( 'page' ) )
$my_page = get_query_var( 'page' );
else
$my_page = 1;
set_query_var( 'paged', $my_page );
$paged = $my_page;
}
// default loop here, if applicable, followed by wp_reset_query();
$args = array(
// other query params here,
'paged' => $my_page
);
$my_query = new WP_Query( $args );
// custom loop code
wp_pagenavi( array( 'query' => $my_query ) );
wp_reset_query();
J’espère que cela aide.
Solution n°2 trouvée
Lorsque vous utilisez get_posts
, vous effectuez une requête par vous-même et n’utilisez pas les variables de requête par défaut générées par WordPress. Le plug-in PageNavi ne fonctionnera pas immédiatement sur les boucles personnalisées.
Comme indiqué par rbaier4, vous devez utiliser la paged
variable. Veillez à ne pas mélanger la boucle par défaut avec vos éléments personnalisés et à réinitialiser les variables une fois que vous avez terminé.
global $paged;
if (get_query_var( 'paged' ))
$my_page = get_query_var( 'paged' );
else {
if( get_query_var( 'page' ) )
$my_page = get_query_var( 'page' );
else
$my_page = 1;
set_query_var( 'paged', $my_page );
$paged = $my_page;
}
// default loop here, if applicable, followed by wp_reset_query();
$args = array(
// other query params here,
'paged' => $my_page
);
$my_query = new WP_Query( $args );
// custom loop code
wp_pagenavi( array( 'query' => $my_query ) );
wp_reset_query();
J’espère que cela aide.
0 commentaire