web-dev-qa-db-fra.com

get_query_var ('paged') renvoie toujours vide

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?

3
Ashkas

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']
1
Steve Claridge

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?

0
Dan