• Решено ViktorHavr

    (@viktorhavr)


    В категориях не работает постраничная навигация, которая сделана точно как и на главной странице. Отображается правильное количество страниц внизу, но когда кликаешь по одной из них, выводит сообщение «It seems we can’t find what you’re looking for. Perhaps searching can help».
    Эта проблема «решается», если поле настроек «Blog pages show at most» сменить з дефолтных 10 на 1. Но в таком случае форма поиска на сайте дает только одну страницу в результат. Находил решение, что проблема решается плагином, но мне это решение не помогло.

    Для пагинации использую <?php wp_corenavi(); ?>
    Страницу определяю так $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

Просмотр 13 ответов — с 1 по 13 (всего 13)
  • 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, за помощь. Извините за потраченное время.

Просмотр 13 ответов — с 1 по 13 (всего 13)
  • Тема «Постраничная навигация в категориях» закрыта для новых ответов.