webentwicklung-frage-antwort-db.com.de

posts_nav_link (); Wird auf statischen Seiten nicht angezeigt

Ich habe zwei verschiedene Loops. Der Standard auf der Homepage, aber eine sekundäre Schleife auf der Archivseite. Es erfasst den gesamten Inhalt wie folgt:

<?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>

Wenn ich jedoch posts_nav_link(); einbinde, wird es nicht angezeigt. Liegt das daran, dass es sich um eine statische Seite handelt? Ich benutze dies für eine unendliche Schriftrolle.

2
tmyie

Stellen Sie sicher, dass Sie am Ende einer mit WP_Query erstellten Schleife ein wp_reset_postdata () einfügen.

Verwenden Sie wp_reset_postdata(), um die globale $ post-Variable der Hauptabfrageschleife nach einer sekundären Abfrage wiederherzustellen ... 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 ist für Archivseiten vorgesehen. Diese Funktion verwendet get_next_posts_nav_link, der die global variable $wp_query verwendet . Es wird auf !is_singular() geprüft. Dies ist auf Ihrer "statischen" Seite immer falsch, da $wp_query die Seite (einzeln) und nicht die von Ihnen erstellte Abfrage darstellt. Ja, das liegt daran, dass es sich um eine statische Seite handelt.

Chip Bennett hat eine ziemlich ausführliche Antwort verfasst, in der erklärt wird, wie Paginierung funktioniert .

1
s_ha_dum