wp_corenavi это не стандартная функция и ее содержимое может весьма отличаться. первый же пример из гугла дает такой код:
if (!$current = get_query_var('paged')) $current = 1;
Проверял также и функцию pagenavi();
одноименного плагина. Проблема — аналогичная. Спасибо, Ваш код меньше на несколько символов, но функционал тот же и проблема не в этом.
Меня интересует, почему пагинация не работает с категориями, когда на главной странице работает отлично. Одно из «решений» — установка макс. количества постов на странице равным 1, но меня оно не устраивает, ибо нарушает иной функционал сайта.
да вариантов быть может куча.
например, у вас в теме 2 вывода цикла записей. скажем, один выводит записи рубрики — второй выводит записи в слайдере.
или количество записей на странице определяется в цикле вывода записей.
или еще что — тут без самой темы сказать ничего нельзя.
А что нужно использовать (query_posts или new WP_Query), чтоб не возникало подобных проблем?
проблемы все равно будут, если не использовать paged
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$my_query = new WP_Query('category_name=Resources&showposts=50&paged=' . $paged');
Использую следующий код:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'cat'=>$cat,
'paged' => $paged,
'posts_per_page' => $ppp_count
);
$cat_query = new WP_Query( $args );
while ( $cat_query->have_posts()) : $cat_query->the_post();?>
//html code
<?php endwhile; ?>
<div class="paginationWrapper">
<?php wp_corenavi(); ?>
</div>
Так вообще не выводит пагинацию.
Через query_posts выводило, но не переходило на вторую и тд. страницы.
а содержимое вашей функции wp_corenavi приведите.
Вот она:
function wp_corenavi() {
global $wp_query;
$big = 999999999; // need an unlikely integer
$pages = paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $wp_query->max_num_pages,
'type' => 'array',
'prev_next' => FALSE,
) );
if( is_array( $pages ) ) {
$paged = ( get_query_var('paged') == 0 ) ? 1 : get_query_var('paged');
echo '<div class="resultPagination"><ul>';
foreach ( $pages as $page ) {
echo "<li>$page</li>";
}
echo '</ul></div>';
}
}
сдаюсь.
у меня ваш код по умолчанию работает и на главной и в рубриках.
остается только узнать, как вы получаете значения $cat и $ppp_count ?
$cat = get_query_var(‘cat’);
$ppp_count=intval(get_field(«posts_per_cat$cat»,’option’));
тему переделываю стандартную «twenty twelve». Может в этом проблема.
Скажите пожалуйста, какое максимальное количество постов у Вас установлено в разделе «Настройки-Чтение»?
Мой товарищ порекомендовал поставить его равным 1, и использовать query_posts, и о чудо, пагинация в категориях заработала. Но теперь в поиске выдает только один ответ, и во всех WP_Query( $my_args ); возвращает только один пост, если «posts_per_page» не передать вручную в $my_args. Даже не знаю, что лучше
что-то у вас не так.
код вставляйте в тегах code, а то он подозрительно выглядит.
что установлено в настройках сайта вообще по барабану.
ваш код должен работать с posts_per_page — по крайней мере у меня на twenty twelve он прекрасно работает.
Создал еще одно тестовое приложение. Отключил все, что только можно. Так вот, заметил интересную закономерность. Количество постов, при использовании WP_Query, выводится такое как в posts_per_page
заданном в передаваемых ему параметрах . А количество страниц при пагинации считается как количество постов в рубрике разделенное на максимальное количество постов установленное в разделе «Настройки-Чтение»
Проблема решена. Как оказалось, желая сделать лучше, я сглупил. Переменную ppp_count я получал через get_option. И через плагин Custom Fields указал этой опции числовой тип, не работало)) Когда сменил на текстовый, а преобразование в числовой произвел непосредственно уже, где использовал, то заработало.
Спасибо, уважаемый Flector, за помощь. Извините за потраченное время.