web-dev-qa-db-fra.com

get_query_var ('paginé') ne fonctionne pas en dehors de la page d'accueil

Vingt-onze thème ...

Sur la page d’accueil, j’ai filtré avec succès la boucle pour n’afficher que les messages "recommandés" avec une pagination fonctionnant correctement via des liens de navigation. J'essaie d'afficher les messages de toutes les catégories sur une autre page intitulée "Non filtré". Pourquoi les liens de navigation disparaissent-ils lorsqu'ils sont utilisés sur cette autre page?

edit: si je change la valeur de 'paginé' en '1' ou '2', je reçois les 10 posts auxquels je m'attendrais, alors 'paginé' semble fonctionner en fonction de la valeur que j'ai définie, mais pas au moment de la définir get_query_var ('paginé')

            <?php /* $paged = ( get_query_var('page') ) ? get_query_var('page') : 1;*/

            $unfiltered_query = new WP_Query ( 

            array (
                'posts_per_page' => 10,
                'paged' =>  get_query_var( 'paged' )
            ) 

        );?>

        <?php if ( $unfiltered_query->have_posts() ) : ?>

            <?php twentyeleven_content_nav( 'nav-above' ); ?>

            <?php /* Start the Loop */ ?>

                <?php while ( $unfiltered_query->have_posts() ) : $unfiltered_query->the_post(); ?>

                <?php get_template_part( 'excerpt', get_post_format() ); ?>

            <?php endwhile; ?>

            <?php twentyeleven_content_nav( 'nav-below' ); ?>
6
Adam

twentyeleven_content_nav() utilise l'objet de requête principal, $wp_query. Vous devrez utiliser la variable $wp_query plutôt que $unfiltered_query, puis wp_reset_query() pour restaurer le $wp_query original (que vous trouverez dans $wp_the_query, ce que vous devriez probablement éviter de toucher directement).

Tant que vous prenez soin de restaurer la requête d'origine, vous êtes en bonne forme.

Je soumettrais un correctif au noyau qui permet à twentyeleven_content_nav() de prendre éventuellement un objet de requête qu'il peut utiliser pour ses calculs.

6
Andrew Nacin

l'argument pour WP_Query est paged, mais la requête var est page, pas de 'd' à la fin.

'paged' =>  get_query_var( 'paged' )

devrait être:

'paged' =>  get_query_var( 'page' )
6
Milo

Que faire si vous remplacez get_query_var( 'paged' ) par le $paged global? par exemple. remplacez ceci:

$unfiltered_query = new WP_Query ( 

    array (
        'posts_per_page' => 10,
        'paged' =>  get_query_var( 'paged' )
) 

...avec ça:

global $paged;

$unfiltered_query = new WP_Query ( 

    array (
        'posts_per_page' => 10,
        'paged' =>  $paged
) 

MODIFIER

Ok, ça ne fonctionnera apparemment pas. Le $paged global n'est apparemment pas défini tant que la requête n'est pas exécutée.

1
Chip Bennett