Почему «страницы блога больше не отображаются» мешают моей пользовательской wp_query?

Я очень новичок в WordPress, особенно когда речь идет о создании настраиваемого цикла, как показано ниже. Это прекрасно работает, однако я недоумеваю, почему «страницы блога показывают максимум» (в разделе «Настройки»> «Чтение») мешает запросу.

В приведенном ниже примере у меня есть post_per_page, установленный в 10. Если я оставлю по умолчанию «страницы в блоге не более», а 10 сообщений работают нормально, потому что они соответствуют и правильно вычисляют страницы. Однако, если я изменил «posts_per_page» на 5, я получаю несколько дополнительных страниц, добавленных в разбивку на страницы, которые отображают «страница не найдена» при нажатии.

Можно ли переопределить этот параметр у администратора? Я думал, что создание пользовательского wp_query все равно переопределит это. Что я делаю не так?

Я также использую wp_pagenavi для разбивки на страницы, как вы можете видеть в приведенном ниже примере, и иметь персонализированный тип сообщения «листинг». Я использую WordPress 3.1.3.

<?php $custom_query = new WP_Query( array( 'post_type' => 'listing', 'posts_per_page' => 10, 'paged' => get_query_var('paged') ) ); ?> <?php if ( $custom_query->have_posts() ) : while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?> <div id="post-<?php the_ID(); ?>"> // stuff here </div> <?php endwhile; endif; ?> //wp_pagenavi <?php if (function_exists('wp_pagenavi')) { wp_pagenavi( array( 'query' => $custom_query ) ); } ?> <?php wp_reset_postdata(); ?> 

Solutions Collecting From Web of "Почему «страницы блога больше не отображаются» мешают моей пользовательской wp_query?"

 <?php global $query_string; $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $custom_query = new WP_Query( array( 'post_type' => 'listing', 'posts_per_page' => 10, 'paged' => $paged ) ); ?> 

добавьте код $paged =...

«Страницы блога показывают не больше» – это более или менее точно то, что кажется. Это количество сообщений, которые будут отображаться на странице для списков страниц с разбивкой по страницам. posts_per_page переопределяет этот параметр для определенных запросов.

Вы видите больше, чем значение posts_per_page потому что липкие сообщения перетасовываются и привязываются к началу набора результатов, заставляя первую страницу иметь posts_per_page + число «липких сообщений» количество сообщений. Это нечетно, я признаю, но он вытекает из столь же странного решения хранить липкие сообщения в виде сериализованного массива в $wpdb->options а не как записи в $wpdb->postmeta .

Чтобы предотвратить жонглирование липких сообщений, передайте 'ignore_sticky_posts' => true в качестве аргумента для вашего WP_Query .

То, что «Страницы блога показывают больше всего», – это то, как много страниц вашего сайта на самом деле имеет, когда отображается максимальное количество сообщений на странице. Затем он отправляет пользователей на страницу с ошибкой, если они переходят на страницу, в которой нет сообщений.