Mettre cela en place après avoir heurté un mur de briques pour des solutions possibles.
Avoir un site avec quelques types de publication personnalisés et les taxonomies personnalisées associées. Pour faciliter les choses, j'utilise un modèle unifié taxonomy.php
.
Dans ce modèle, il y a trois boucles. Je voudrais que chacun d'eux passe à la première page, après cela, juste la troisième boucle. Je comprends comment faire fonctionner cela avec is_paged()
mais il y a un problème plus important que je ne peux tout simplement pas résoudre.
Dans mon $args
j'ai inclus $paged
à partir de
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
Mais $paged
revient toujours à 1, quelle que soit la page sur laquelle je me trouve. Si je fais une suite
get_query_var('paged')
Ensuite, rien n'est renvoyé, peu importe si je suis sur la première, deuxième, troisième ou page etc.
J'ai lu qu'il fallait réinitialiser chaque boucle pour que cela fonctionne, et c'est une pratique que j'ai toujours suivie.
Je n'inclurai pas toute la page car il s'agit d'une taxonomie assez longue et complexe. Au lieu de cela, je montrerai la configuration de base des deux boucles.
NOTE: Je ne peux pas utiliser pre_get_posts
pour cette page car elle affecte toutes les boucles. Chacune de ces boucles a des exigences posts_per_page
distinctes et d'autres aspects qui doivent être séparés.
En haut du modèle, j'ai
//this present duplication
$do_not_duplicate = array();
global $wp_query;
$term = $wp_query->queried_object;
Et je mets en place ma boucle après mes disputes avec
while ($new_query->have_posts()) : $new_query->the_post();
La troisième boucle que je veux paginée a ce code à proximité
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args=array(
'posts_per_page' => $total_posts,
'post__not_in' => array_merge($do_not_duplicate, $unwanted_post_ids ),
'paged' => $paged,
'tax_query' => array(
array(
'taxonomy' => $term->taxonomy,
'field' => 'slug',
'terms' => $term->slug,
)
)
);
// Re-run the query with the new arguments
query_posts( $args );
J'ai utilisé wp_query
plutôt que query_posts
, mais pour mes dernières tentatives, c'est ce que j'ai eu là-bas. Préférerait le changer en arrière.
Des idées?
Avez-vous le paramètre "paginé" dans l'URL de la ou des pages avec lesquelles vous essayez d'utiliser get_query_var? Autant que je sache, get_query_var ("paged") renvoie explicitement la valeur du paramètre URL, vous devez donc disposer d'une URL comme celle-ci pour que cela fonctionne:
/?paged=7
Alternativement, vous pouvez lire le paramètre URL en utilisant un PHP simple:
$_GET['paged']
Vous devriez pouvoir prendre cela directement à partir de la variable principale $wp_query
, vous pouvez faire une print_r()
et vérifier les différents arguments dont vous auriez besoin, comme paginé, posts_per_page, etc. Quelle information voyez-vous sur votre modèle lorsque vous le faites?