Mam problem ze zrozumieniem, a nawetdiagnozowanie, dlaczego paginacja nie jest wyświetlana w moim pliku home.php, który utworzyłem w motywie dwudziestu siedemdziesięciu dzieci. Mam 3 posty na blogu i chcę, aby wyświetlał się tylko jeden, z paginacją na dole.
Używam WordPress 4.7.2 i zgodnie z to artykuł Powinienem używać funkcji_posts_pagination () do wyświetlania stronicowania dla moich postów, ale nic się nie pojawia. Skonfigurowałem niestandardowe zapytanie zgodnie z opisem tutaj (przekazując parametry jako tablicę zamiast ciągu zapytania):
$paged = ( get_query_var( "paged" ) ) ? get_query_var( "paged" ) : 1;
$query = new WP_Query( array( "posts_per_page" => 1, "paged" => $paged ) );
Są 3 posty, a jeśli ustawię to na zapytanie, zobaczę wszystkie trzy na mojej stronie home.php:
$query = new WP_Query( array( "posts_per_page" => 3, "paged" => $paged ) );
Gdy ustawię „posts_per_page” na 1, a następnie zadzwonięthe_posts_pagination (), widzę tylko pierwszy post i brak stronicowania. Nie rozumiem, dlaczego nie pojawia się podział na strony, ponieważ jest więcej stron do wyświetlenia. Jestem jednak naprawdę nowy w WordPress, więc jestem pewien, że brakuje mi czegoś oczywistego.
Oto mój pełny kod w celach informacyjnych:
<?php
get_header();
$paged = ( get_query_var( "paged" ) ) ? get_query_var( "paged" ) : 1;
$query = new WP_Query( array( "posts_per_page" => 1, "paged" => $paged ) );
?>
<div class="wrap">
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
if ( $query->have_posts() ) :
/* Start the Loop */
while ( $query->have_posts() ) : $query->the_post();
the_title("<h1>", "</h1>");
the_content();
endwhile;
the_posts_pagination();
else :
get_template_part( "template-parts/post/content", "none" );
endif;
?>
</main><!-- #main -->
</div><!-- #primary -->
</div><!-- .wrap -->
<?php get_footer();
EDYCJA PO ODPOWIEDZI NA PYTANIE
OK, więc wygląda na to, że mimo że ustawiłem „post_per_page”, który chciałem tutaj wyświetlić:
$query = new WP_Query( array( "posts_per_page" => 1, "paged" => $paged ) );
Wordpress nadal polegał na ustawieniach w Pulpit nawigacyjny-> Ustawienia-> Czytanie-> Strony bloga wyświetlają się co najwyżej aby ustalić paginację, więc musiałem tam wejść i to też ustawić. Nadal nie mogłem sprawić, by the_posts_pagination działało poprawnie, ale tak się stało:
previous_posts_link( " << Newer Entries " );
next_posts_link( " Older Entries >> ", $query->max_num_pages);
Odpowiedzi:
1 dla odpowiedzi № 1the_posts_pagination()
nie rozpoznaje nowego zapytania, ale odczytuje z globalnego pliku wp_query zapisanego w $GLOBALS["wp_query"]
.
The Strony blogów wyświetlają się co najwyżej ustawienie w obszarze Ustawienia> Czytanie w panelu administracyjnym jest używane jako posts_per_page
tutaj.
Można znaleźć różne sposoby modyfikacji domyślnego zapytania w Ten artykuł.