Intereting Posts
как получить идентификатор пользователя WordPress при регистрации пользователя Добавить класс в панель администратора WordPress? Правильная процедура при разработке веб-сайта WP для клиента Есть способ добавить обертку вокруг размещенных изображений? Проблема с подключаемым подзаголовком WP Можно ли выбрать и отредактировать способ отображения последней страницы из определенной категории на странице? Добавление префикса в заголовок сообщения Несколько страниц блога Многоузловой широкополосный тип? WordPress wpautop / shortcode генерирует недопустимую разметку Эффективное пересечение таксономии Пустой супер-кеш программно (с действием ACF) Управление резервными копиями: проблемы с пространством Зарегистрировать форму, как получить полный контроль над ней Как разрешить некоторым посетителям редактировать встроенную специальную запись

Как использовать the_posts_navigation для wp_query и get_posts?

WordPress имеет функцию the_posts_navigation с 4.1.0. Но я не знаю, как использовать wp_query или get_posts . следующий код находится в файле шаблона страницы.
Метод wp_query:

  <?php if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } else if ( get_query_var('page') ) { $paged = get_query_var('page'); } else { $paged = 1; } $get_posts=new wp_query('post_type=case&posts_per_page=2&paged='.$paged); while($get_posts->have_posts()):$get_posts->the_post(); the_title(); endwhile; the_posts_pagination( array( 'prev_text' => __( 'Previous page', 'cm' ), 'next_text' => __( 'Next page', 'cm' ), 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'cm' ) . ' </span>', ) ); ?> в  <?php if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } else if ( get_query_var('page') ) { $paged = get_query_var('page'); } else { $paged = 1; } $get_posts=new wp_query('post_type=case&posts_per_page=2&paged='.$paged); while($get_posts->have_posts()):$get_posts->the_post(); the_title(); endwhile; the_posts_pagination( array( 'prev_text' => __( 'Previous page', 'cm' ), 'next_text' => __( 'Next page', 'cm' ), 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'cm' ) . ' </span>', ) ); ?> 

Метод get_posts:

  <? while(have_posts()):the_post(); if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } else if ( get_query_var('page') ) { $paged = get_query_var('page'); } else { $paged = 1; } $case_posts=get_posts('post_type=case&posts_per_page=2&paged='.$paged); echo '<pre>'; print_r($case_posts); echo '</pre>'; foreach($case_posts as $case_post){ echo $case_post->post_title; } endwhile; // Previous/next page navigation. the_posts_pagination( array( 'prev_text' => __( 'Previous page', 'cm' ), 'next_text' => __( 'Next page', 'cm' ), 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'cm' ) . ' </span>', ) ); ?> в  <? while(have_posts()):the_post(); if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } else if ( get_query_var('page') ) { $paged = get_query_var('page'); } else { $paged = 1; } $case_posts=get_posts('post_type=case&posts_per_page=2&paged='.$paged); echo '<pre>'; print_r($case_posts); echo '</pre>'; foreach($case_posts as $case_post){ echo $case_post->post_title; } endwhile; // Previous/next page navigation. the_posts_pagination( array( 'prev_text' => __( 'Previous page', 'cm' ), 'next_text' => __( 'Next page', 'cm' ), 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'cm' ) . ' </span>', ) ); ?> 

Они не работают и отображают разбиение на страницы, но вводят http://127.0.0.1/gdboer/?page_id=74&page=2 вручную в адресной строке, он работает. Кто может мне помочь, большое спасибо!

Solutions Collecting From Web of "Как использовать the_posts_navigation для wp_query и get_posts?"

the_posts_navigation() – это просто функция-обертка для get_the_posts_navigation() которая является исключительно функцией-оболочкой для paginate_links . Первые две функции используют те же точные параметры, которые используются paginate_links и фактически передают ее также последней функции

get_the_posts_navigation() и the_posts_navigation() – это хорошие новые функции, поскольку он устраняет множество пользовательских get_the_posts_navigation() и более the_posts_navigation() для пользователей новых неопытных пользователей, которые хотели бы пронумеровать ссылки на страницы

Единственным недостатком этого get_the_posts_navigation() является то, что разработчики отправили и завернули функцию paginate_links в условный оператор, который гласит, что если основной запрос ( $wp_query ) имеет менее 1 страницы (помните, что первая страница равна 0 а вторая страница 2 ), не показывайте ссылки. Это проблематично для пользовательских запросов на страницах шаблонов. Страницы всегда будут иметь только одну страницу, поэтому эти функции не будут работать с пользовательскими запросами

Единственное истинное обходное решение, если вам нужно использовать the_posts_navigation() , – использовать ответ @ChipBennet в этом сообщении . Мне действительно не нравится сбрасывать основной запрос (довольно хаки, по-моему, это похоже на использование query_posts ), но я не вижу другого решения, чтобы заставить get_the_posts_navigation() работать с пользовательскими запросами

У меня есть пользовательский шаблон, и я изо всех сил старался показать компонент разбивки на страницы. вот что сработало для меня.

 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'posts_per_page' => 3, 'orderby' => 'menu_order', 'order'=> 'ASC', 'paged'=>$paged, 'post_type' => 'projects' ); $projects = new WP_Query($args); <!-- working example of pagination with numbers --> ...<?php endwhile;?> <?php $GLOBALS['wp_query']->max_num_pages = $projects->max_num_pages; the_posts_pagination( array( 'mid_size' => 1, 'prev_text' => __( 'Back', 'green' ), 'next_text' => __( 'Onward', 'green' ), 'screen_reader_text' => __( 'Posts navigation' ) ) ); ?> OR <!-- working example of pagination without numbers --> ...<?php endwhile;?> <?php next_posts_link( 'next', $projects->max_num_pages ); ?> <?php previous_posts_link('prev') ?> 

Эта функция использует get_the_posts_pagination() которая использует GLOBAL wp_query для настройки функции paginate_links() , поэтому я считаю, что это не работает для get_posts .

Попробуйте использовать функцию paginate_links() самостоятельно или функцию posts_nav_link()

PS: Убедитесь, что вы используете wp_reset_query()