Как решить проблемы с пагинацией в category.php?

Я сделал пагинацию кодом в category.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/name/ - все работает.
А вот на category/name/page/2 - нет. Пусто. Шаблон category.php не цепляется. Как исправить? Спасибо.
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
trampick
@trampick
Веб-разработчик
1-ый момент попробуй поэкспериментировать с постоянными ссылками в настройках.

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

3-ий вариант это сделать страницу, например новости. Сделать для нее рубрику новости. Создать шаблон для этой страницы page-novosti.php и выводить на ней записи рубрики Новости.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
PbI6A_KuT
@PbI6A_KuT Автор вопроса
Частично помог такой фикс. Страница 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');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы