Intereting Posts
Исключить формат публикации из навигации Создать класс, который будет доступен для всех функций плагина добавьте поле ввода файла в настраиваемый тип сообщения и как его использовать в шаблоне cutom Как вызвать запрос $ _GET на странице плагина администратора? Shortcode в выдержке Таксономии, не появляющиеся в столбцах на приборной панели почему я не могу получить идентификатор комментария? Форматирование даты / времени, возвращаемого из пользовательского запроса $ wpdb Как загрузить изображение без идентификатора сообщения с помощью нового медиа-загрузчика? Как узнать, какая страница архива активна Выберите, чтобы отобразить сообщение Thumbnail? Изменение URL-адреса по умолчанию для прикрепления изображения wpdb-> вставить сразу несколько записей Проблема импорта локального хоста и сервера WordPress как приложение для заметок

Как использовать 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()