Je travaille sur un site Web sur lequel j'ai un blog, mais j'ai aussi un type de message personnalisé qui me permet de publier des vidéos.
J'aimerais utiliser la pagination de sorte que s'il y a plus de 9 vidéos affichées, la pagination se produise.
La première partie de ceci fonctionne. Les vidéos sont en effet limitées à 9 par page et la pagination apparaît correctement en bas.
Cependant, lorsque je clique sur le lien de la deuxième page, même si l'URL change, les vidéos des premières pages sont affichées.
Pour mes articles de blog "normaux", la pagination fonctionne exactement comme prévu.
C'est le code actuel que j'utilise pour mon type de message personnalisé:
<?php if ( have_posts() ) : ?>
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts('post_type=videos&posts_per_page=9&paged=$paged'); ?>
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
Toute aide serait grandement appréciée.
Vous obtenez toujours le contenu de la première page, car le string des paramètres passés à query_posts
étant encapsulé dans single quotes empêche les variables (ainsi que les séquences d'échappement pour les caractères spéciaux autres que $
) d'être étendues.
query_posts("post_type=videos&posts_per_page=9&paged=$paged");
would s'occupe de ce problème.
query_posts('post_type=videos&posts_per_page=9&paged='.$paged);
serait aussi.
Et enfin, passer un tableau d’arguments mélangés à la place d’une chaîne de type requête URL serait .
Ceci étant dit, vous ne devez absolument pas utiliser query_posts :
Selon votre commentaire, vous avez tenté d'utiliser get_posts
.
C’est une fonction très utile, mais ce n’est pas la bonne façon de procéder si vous voulez utiliser un WordPress-Loop par la suite. get_posts
retourne un tableau d'objets post - la propriété WP_Query
de l'objet posts
. Mais seulement cette propriété, sans tous les autres avantages et méthodes, que WP_Query
fournit.
Par conséquent, pour aller avec l'extrait de code ci-dessus, faites quelque chose dans le sens de ceci:
<?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.';
}
?>