les mecs! Je suis à peu près sûr que ce sera un morceau de gâteau pour vous, mais j'essaie d'ajouter une pagination à ma boucle. J'ai essayé quelques codes disponibles autour, et j'ai dû les paginer, mais les pages 2, 3, etc. avaient le même contenu que la page 1. Quelle est la meilleure solution pour ce que j'ai en ce moment?
<?php
$recentPosts = new WP_Query();
$recentPosts->query('showposts=5');
?>
<?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
<article>
</article>
<?php endwhile; ?>
Merci d'avance.
Cela est probablement dû au fait que vous utilisez un modèle de page personnalisé. Essayez ce qui suit. J'ai commenté les étapes en cours de route. J'espère que ça aide.
<?php
//get the current page
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
//pagination fixes prior to loop
$temp = $query;
$query = null;
//custom loop using WP_Query
$query = new WP_Query( array(
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'ASC'
) );
//set our query's pagination to $paged
$query -> query('post_type=post&posts_per_page=5'.'&paged='.$paged);
if ( $query->have_posts() ) :
while ( $query->have_posts() ) : $query->the_post();
?>
<li>
<?php if ( has_post_thumbnail()) : ?>
<?php the_post_thumbnail();?>
<?php endif; ?>
<div class="someclass" >
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
</div>
</li>
<?php endwhile;?>
<?php //pass in the max_num_pages, which is total pages ?>
<div class="pagenav">
<div class="alignleft"><?php previous_posts_link('Previous', $query->max_num_pages) ?></div>
<div class="alignright"><?php next_posts_link('Next', $query->max_num_pages) ?></div>
</div>
<?php endif; ?>
<?php //reset the following that was set above prior to loop
$query = null; $query = $temp; ?>
Ici, mon type de message est 'news_events', la pagination sera affichée après chaque titre de 4 messages.
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$news_events = array( 'post_type' => 'news_events', 'posts_per_page' => 4, 'paged' => $paged);
$wp_query = new WP_Query( $news_events );
if ( $wp_query->have_posts() ) : ?>
<?php while ( $wp_query->have_posts() ) : $wp_query->the_post();?>
<?php the_title(); echo "<br/>"; ?>
<?php endwhile; ?>
<nav>
<?php previous_posts_link('« Newer',$wp_query->max_num_pages); ?>
<?php next_posts_link('Older »',$wp_query->max_num_pages); ?>
</nav>
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e( 'Sorry, no news events posts at this time.', 'theme' ); ?></p>
<?php endif; ?>
Il y a peu de façons de faire une pagination . En voici un:
<?php $query = new WP_Query( array( 'posts_per_page' => 5 ) ); ?>
<?php while ($query->have_posts()) : $query->the_post(); ?>
<article>
<h2><a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<article>
<?php endwhile; ?>
<div class="nav-previous alignleft"><?php next_posts_link( 'Older posts' ); ?></div>
<div class="nav-next alignright"><?php previous_posts_link( 'Newer posts' ); ?></div>
Bien sûr, cela ne fonctionnera pas si votre WP_Query n'est pas construit correctement.