À l'intérieur de ma boucle dans single.php, j'ai utilisé une requête personnalisée à l'aide de get_posts
pour renvoyer les publications appartenant à une certaine catégorie.
<?php global $post;
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$myposts = get_posts("paged=$paged&category=5");?>
<?php foreach($myposts as $post) :?>
<?php the_title();?>
<?php endforeach; ?>
Le problème est que la boucle d'origine, qui est la boucle single.php, semble ne pas fonctionner après l'exécution de la requête. Par exemple, les liens de navigation (suivant et précédent) ne fonctionnent pas.
Avez-vous déjà fait face à ce problème? votre aide est appréciée.
Vous devez appeler wp_reset_postdata()
après votre requête pour restaurer la variable globale $post
utilisée par les fonctions de lien de navigation pour déterminer les publications suivantes/précédentes.
Vous pouvez également utiliser WP_Query
au lieu de get_posts
. Fait à peu près la même chose, mais à titre de référence:
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$args = array ( 'category' => 5, 'paged' => $paged, 'posts_per_page'=> 5 );
$catPosts = new WP_Query( 'post_type=post' );
if( $catPosts->have_posts() ){ ?>
<ul>
<?php while ($catPosts->have_posts()) : $catPosts->the_post(); ?>
<li>
<a href="<?php the_permalink();?>"><?php the_title(); ?></a>
</li>
<?php endwhile; ?>
</ul>
<?php
} else {
// no posts found
}
wp_reset_postdata();