Intereting Posts
wp_comment_query, чтобы вернуть значение мета или использовать get_comment_meta Как форматировать HTML-код короткого кода во внешнем файле Получить информацию о вложении / изображении в JS Создание дочерней темы из других файлов шаблонов Создание настраиваемого типа публикации галереи? как получить постоянную связь с php Условный крюк В новом API пользовательского интерфейса темы, как отправить значение с фронта обратно на панель администратора? Как создать отдельную страницу для каждого автора? get_header (), get_footer () из шаблона плагина Как я могу увидеть список продуктов, которые я установил для исключения из пользовательского поля? Ошибка PHP при попытке загрузить файлы .mp3 через медиа-библиотеку Добавить JQuery Datepicker в настраиваемое поле в post edit Виджет WordPress Default Loop, разбиение на страницы на пользовательский URL Установка нового шаблона по умолчанию для создания страницы

Разбиение страницы на WP_query, не отображающее ссылки на навигацию

У меня возникли проблемы с добавлением разбивки на страницы. Я использую WP_query и хотел бы вернуть 4 сообщения на страницу. Основной запрос, похоже, работает нормально, но я должен что-то пропускать в отношении разбивки на страницы.

 // The query for 4 posts $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $query = new WP_Query(); $query->query('showposts=4'.'&paged='.$paged); if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?> <div class="post"> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <p class="author">by <?php the_author(); ?></p> </div> <?php endwhile; ?> <!-- end of the loop --> <nav> <?php previous_posts_link('&laquo; Newer posts') ?> <?php next_posts_link('Older posts &raquo;') ?> </nav> <?php wp_reset_postdata(); // If no results appear else : ?> <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif; ?> 

Я установил var для разбивки на страницы вверху как таковой:

 $query->query('showposts=4'.'&paged='.$paged); 

В том числе и таргетинг на страницы:

 <nav> <?php previous_posts_link('&laquo; Newer posts') ?> <?php next_posts_link('Older posts &raquo;') ?> </nav> 

Но я просто получаю пустой HTML <nav></nav> – но никаких ошибок, и я не могу понять, что мне не хватает.

Изменить: согласно предложению, которое я обновил как:

  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'post_per_page' => 4, 'paged' => $paged, ); $query = new WP_Query( $args ); 

и обновила ссылку на кнопку:

 <?php next_posts_link( 'Older posts &raquo;', $query->max_num_pages ); ?> 

Я все еще не вижу ссылку для разбивки на страницы.

Solutions Collecting From Web of "Разбиение страницы на WP_query, не отображающее ссылки на навигацию"

Пожалуйста, не используйте showposts он заменил posts_per_page давным-давно.

Лично я бы добавил аргументы в WP_Query как показано ниже, дополнительно разбиение на страницы должно работать, как показано ниже:

 $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; $args = array( 'post_per_page' => 4, 'paged' => $paged, ); $query = new WP_Query( $args ); global $wp_query; // Put default query object in a temp variable $tmp_query = $wp_query; // Now wipe it out completely $wp_query = null; // Re-populate the global with our custom query $wp_query = $query; if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); // loop code endwhile; previous_posts_link('&laquo; Newer posts'); next_posts_link( 'Older posts &raquo;', $query->max_num_pages ); wp_reset_postdata(); else : // no post found code endif; // Restore original query object $wp_query = null; $wp_query = $tmp_query; 

Что такое же Q & A Как исправить разбиение на страницы для пользовательских циклов? Я связал тебя с @ChipBennett.

Другое примечание: если это в шаблоне страницы, работающем как статическая страница, вам нужно использовать page переменной запроса вместо paged :

 $paged = ( get_query_var( 'page' ) ) ? get_query_var( 'page' ) : 1; 

@ialocin, Спасибо за ваш ответ! Он решил мою проблему с небольшим редактированием кода.

 if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); 

следует изменить на

 if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); ?> 

верный? Это то, что сработало в моем случае.

Хорошая вещь, чтобы получить значение posts_per_page из wordpress. Вы можете изменить это значение в меню wordpress admin.

 $page = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; if(!$page) $page = ( get_query_var( 'page' ) ) ? get_query_var( 'page' ) : 1; $posts_per_page = get_option( 'posts_per_page' ); $query = new WP_Query( array( 'posts_per_page' => $posts_per_page, 'paged' => $page, 'post_status' => 'publish', 'orderby' => 'title', 'order' => 'ASC', ) ); while ( $query->have_posts() ) { $query->the_post(); // Code for Output }