web-dev-qa-db-fra.com

posts_nav_link (); ne pas apparaître sur des pages statiques

J'ai deux boucles différentes. La valeur par défaut sur la page d'accueil, mais une boucle secondaire sur la page d'archive. Il saisit tout le contenu, comme ceci:

<?php // WP_Query arguments
$args = array (
    'posts_per_page'         => '3'
);
// The Query
$archiveQuery = new WP_Query( $args );

// The Loop
if ( $archiveQuery->have_posts() ) {
    while ( $archiveQuery->have_posts() ) {
        $archiveQuery->the_post(); ?>
        <div class="post">
<a href="<?php the_permalink() ?>">
    <?php  first_item(); ?> </a>

Cependant, lorsque j'inclus posts_nav_link();, il ne s'affiche pas. Est-ce parce que c'est une page statique? J'utilise ceci pour un parchemin infini.

2
tmyie

Assurez-vous et incluez une wp_reset_postdata () à la fin d'une boucle créée avec WP_Query.

Utilisez wp_reset_postdata() pour restaurer la variable globale $ post de la boucle de requête principale après une requête secondaire ... https://codex.wordpress.org/Function_Reference/wp_reset_postdata

// The Query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
    echo '<ul>';
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        echo '<li>' . get_the_title() . '</li>';
    }
    echo '</ul>';

    /* Restore original Post Data */
    wp_reset_postdata();

} else {
    // no posts found
}
1
signal2013

posts_nav_link est destiné aux pages d'archives. Cette fonction utilise get_next_posts_nav_link qui utilise la variable global __ $wp_query . Il y a un chèque pour !is_singular(). Cela sera toujours faux sur votre page "statique", puisque $wp_query représentera la page (simple) et non la requête que vous avez créée. Donc, oui, c'est parce que c'est une page statique.

Chip Bennett a écrit/compilé une réponse assez exhaustive expliquant comment faire fonctionner la pagination .

1
s_ha_dum