La pagination Wordpress ne fonctionne pas - Toujours afficher le contenu des premières pages
-
-
duplicationpossible de [Comment corriger lapaginationpour lesbouclespersonnalisées?] (http://wordpress.stackexchange.com/questions/120407/how-to-fix-pagination-for-custom-loops)possible duplicate of [How to fix pagination for custom loops?](http://wordpress.stackexchange.com/questions/120407/how-to-fix-pagination-for-custom-loops)
- 0
- 2013-10-31
- Chip Bennett
-
1 réponses
- votes
-
- 2013-07-10
Pourquoi votre code actuel échoue
Vous obteneztoujours le contenu de lapremièrepage,car la chaîne desparamètrestransmis à
query_posts
encapsulés dans guillemets simples empêche le développement des variables (ainsi que des séquences d'échappementpour les caractères spéciaux autres que$
).query_posts("post_type=videos&posts_per_page=9&paged=$paged");
permettrait de résoudre ceproblème.query_posts('post_type=videos&posts_per_page=9&paged='.$paged);
leferait également.Etenfin,transmettre untableau d'argumentsmixtes au lieu d'une chaîne detype requête URL leferait également.
Cela étant dit, vousne devezpas dutout utiliser de query_posts :
Commentprocéder
Selon votre commentaire,vous aveztenté d'utiliser
get_posts
.
C'est unefonctiontrès utileen effet,mais cen'estpas labonnefaçon deprocéder si vous souhaitez utiliser une WordPress-Loop par la suite.get_posts
renvoie untableau d'objets depublication - leposts
. Mais seulement cettepropriété,sanstous les autres avantageset méthodes,queposts
fournit.Par conséquent,pour utiliser l'extrait de code ci-dessus,faites quelque chose dugenre:
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'post_type' => 'videos', 'posts_per_page' => 9, 'paged' => $paged ); $your_query = new WP_Query( $args ); if ( $your_query->have_posts() ) { /* The Loop */ while ( $your_query->have_posts() ) { $your_query->the_post(); // do something } } else { echo 'Sorry, no posts found.'; } ?>
Why your current code fails
Your always getting the content of the first page, because the string of parameters passed to
query_posts
being encapsulated in single quotes prevents variables (as well as escape sequences for special characters other than$
) to be expanded.query_posts("post_type=videos&posts_per_page=9&paged=$paged");
would take care of that problem.query_posts('post_type=videos&posts_per_page=9&paged='.$paged);
would also.And finally, passing an array of mixed arguments instead of a URL-query-style string would as well.
That being said though, you should not use query_posts at all:
How it should be done
As per your comment, you attempted to use
get_posts
.
That is a very useful function indeed, but not the correct way to go if you want to use a WordPress-Loop thereafter.get_posts
returns an array of post objects - theWP_Query
object'sposts
property. But only that one property, without all the other goodies and methods, thatWP_Query
provides.Hence, to go with your above code snippet, do something along the lines of this:
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'post_type' => 'videos', 'posts_per_page' => 9, 'paged' => $paged ); $your_query = new WP_Query( $args ); if ( $your_query->have_posts() ) { /* The Loop */ while ( $your_query->have_posts() ) { $your_query->the_post(); // do something } } else { echo 'Sorry, no posts found.'; } ?>
-
Mercibeaucouppour cette lectureintéressante.Cependant,veuillezfournir l'alternativeen utilisant laméthodeget_posts (). Est-ce aussi simple que: Celane fonctionnepas vraimentpourmoi,mais celapourrait être à cause du code ailleurs?Thanks very much for that, interesting reading. However please could you provide the alternative using the get_posts() method. Is it as simple as: That isn't actually working for me but that might be because of code elsewhere?
- 1
- 2013-07-10
- Johnny
-
Voir la réponsemise àjour.See updated answer.
- 1
- 2013-07-10
- Johannes Pille
-
Mercibeaucoup d'avoirpris letemps deme montrer comment l'utiliser.J'apprécie vraiment cela.Thank you very much for taking the time out to show me how to use this. I really appreciate it.
- 2
- 2013-07-10
- Johnny
Jetravaille sur un site Web sur lequelj'ai unblog,maisj'ai également untype depublicationpersonnalisépourme permettre depublier certaines vidéos.
Je voudrais utiliser lapagination de sorte que s'il y aplus de 9 vidéos affichées,lapagination seproduise.
Lapremièrepartie de cetravail. Les vidéos sonten effet limitées à 9parpageet lapagination apparaît correctementen bas.
Cependant,lorsqueje clique sur le lien de la deuxièmepage,même si l'URL change,lespremièrespages vidéos s'affichent.
Pourmes articles deblog "normaux",lapaginationfonctionneexactement commeprévu.
Voici le code actuel quej'utilisepourmontype demessagepersonnalisé:
Toute aide seraitgrandement appréciée.