Поддержка Проблемы и решения Пагинация в category.php не корректно работает.

  • Создал в category.php вывод постов и пагинацию таким кодом:

    
    <?php	
    	$cur_cat_id = get_cat_id(single_cat_title("",false));
    	$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    	$args = array('posts_per_page' => 3, 'paged' => $paged, 'post_type' => 'portfolio', 'category__in' => $cur_cat_id);
    
    	$postslist = new WP_Query( $args );
    	
    	if ( $postslist->have_posts() ) :
    		while ( $postslist->have_posts() ) : $postslist->the_post();
    			echo '<div class="row content__horizontal-item">';
    			echo '<a href="' . get_permalink() . '">';
    			echo the_post_thumbnail('portfolio_big_list');
    			echo '<div class="content__horizontal-item-title">';
    			echo the_title();
    			echo '</div>';
    			echo '<span>Узнать подробнее >></span>';
    			echo '</a>';
    			echo '</div>';
    		endwhile;
    
    	echo '<div class="row pages"><ul class="pages__ul %1$s" role="navigation">';
    	$big = 999999999;
    	echo paginate_links( array(
    		'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    		'format' => '?paged=%#%',
    		'current' => max( 1, get_query_var('paged') ),
    		'total' => $postslist->max_num_pages,
    		'prev_text'    => __('«'),
    		'next_text'    => __('»'),
    		'show_all'     => false, // показаны все страницы участвующие в пагинации
    		'end_size'     => 2,     // количество страниц на концах
    		'mid_size'     => 2,     // количество страниц вокруг текущей
    	) );
    	echo '</ul></div>';
    
    	endif;
    ?>
    

    Получил:
    На странице category/category-slug/ — все ок. И посты есть и пагинация.
    А вот на странице category/category-slug/page/2 … category/category-slug/page/N не цепляется шаблон category.php.

    Много гуглил, но решение так и не пришло. Что делал:
    — На странице постоянных ссылок ставил /%category%/%postname%/
    — Добавлял в поле «Префикс для рубрик» — category
    — Менял posts_per_page в разные стороны.

    Страница category/category-slug/page/2 не цепляет category.php. Как сделать так чтобы цепляло? Спасибо.

    Или может возможно другим образом посты вывести и пагинацию выполнить?

    ps: Код брал со страницы type_post, которую сам создал. Там все работает. В категориях — нет.

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Частично помог такой фикс. Страница page/2 — работает! Но дальше page/3…page/N не работают.

    
    function remove_page_from_query_string($query_string)
    { 
        if ($query_string['name'] == 'page' && isset($query_string['page'])) {
            unset($query_string['name']);
            list($delim, $page_index) = split('/', $query_string['page']);
            $query_string['paged'] = $page_index;
        }      
        return $query_string;
    }
    add_filter('request', 'remove_page_from_query_string');
    
    • Ответ изменён 6 лет, 5 месяцев назад пользователем lidolov.

    РЕШЕНО:

    К фиксу выше добавить нужно настройки в разделе «Чтение». А именно сократить кол-во выводимых постов (в моем случае 3 и ниже).

    Совет с тостера, который помог:

    ошибка может быть из-за того что ты хочешь выводить по 3 записи на странице, а wp думает по столько, сколько в настройках стоит(по 8 или 10). И соответственно если у тебя всего 4 записи по твоей логике должно быть 2 страницы. По логике wp всего одна страница. Попробуй больше записей в рубрику добавить и посмотреть заработает ли 3 страница.

    • Ответ изменён 6 лет, 5 месяцев назад пользователем lidolov.
    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Создал в category.php вывод постов и пагинацию таким кодом:

    А чем не устроил стандартный цикл WordPress?

    К фиксу выше добавить нужно настройки в разделе «Чтение». А именно сократить кол-во выводимых постов (в моем случае 3 и ниже).

    Для изменения запроса вывода записей, в WordPress есть хук pre_get_posts, в котором можно скорректировать параметры запроса, в том числе и изменить количество выводимых записей для конкретной категории.

    • Ответ изменён 6 лет, 5 месяцев назад пользователем Denis Yanchevskiy.
Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «Пагинация в category.php не корректно работает.» закрыта для новых ответов.