J'ai donc écrit ce qui suit pour créer un transitoire:
$wp_object_i_created = new WP_Query('cat=1');
set_transient('category_one_posts', $wp_object_i_created, 60*60*1);
Ok, alors j’ai décidé "Tu sais, laisse passer ça et recrache les messages."
Alors j'ai fait ce qui suit:
if(false !== get_transient('category_one_posts')){
$posts_inside = get_transient('category_one_posts');
if($posts_inside->have_posts()){
while($posts_inside->have_posts()){
$posts_inside->the_post();
// Display your posts in some maner.
}
echo get_next_posts_link('« Older Entries', $max_pages);
echo get_previous_posts_link('Newer Entries »', $max_pages);
}
}
Maintenant, la pagination fonctionne - , voici le piège - Cela fonctionne vraiment mal. Je l'ai donc configuré pour afficher 5 messages par page.
Donc, si je vais sur mon lien: http://localhost/wordpress/?page_id=1667
je vois mes 5 messages et au bas mes deux liens - un pour les anciens, un pour les plus récents. Woot. Mais si je clique sur le bouton "Entrées plus anciennes" pour revenir en arrière, mon lien ressemble maintenant à ceci: http://localhost/wordpress/?page_id=1667&paged=2
Je vois qui étaient à la page deux, je peux aller d'une page en avant et ainsi de suite - MAIS les messages sont les mêmes, ils ne mis à jour.
Maintenant, les requêtes habituelles sont effectuées pour obtenir des publications spécifiques en fonction de paramètres spécifiques, ou même simplement la boucle WordPress standard - leur pagination fonctionne comme prévu, vous accédez à la page deux, vous obtenez un ensemble de publications différent de celui de la page un - woot! - nous travaillons.
Mais la pagination basée transitoire ne fonctionne pas.
Pourquoi?
Réponse courte : Vous faites la même requête quelle que soit la page, mais vous attendez un résultat différent.
Réponse longue : la requête doit être différente pour la deuxième page, avec paged=2
; votre requête (et les éléments transitoires) avec pagination doit donc ressembler à ceci:
$paged_var = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
if ( get_transient( 'category_one_posts-' . $paged_var ) == false ) {
$posts_inside = new WP_Query(
array(
'cat' => 1,
'paged' => $paged_var
)
);
set_transient( 'category_one_posts-' . $paged_var, $posts_inside, 60*60*1 );
} else {
$posts_inside = get_transient( 'category_one_posts-' . $paged_var );
}
if ( $posts_inside->have_posts() ) {
while( $posts_inside->have_posts() ) {
$posts_inside->the_post();
// Display posts.
}
echo get_next_posts_link( __( 'Next', 'textdomain'), $posts_inside->max_num_pages );
echo get_previous_posts_link( __( 'Previous', 'textdomain'), $posts_inside->max_num_pages );
}