Так уже пробовали?
$cat = get_query_var('cat');
$args = array('cat' => $cat, 'posts_per_page' => 3, 'paged' => $paged );
Но если Вы хотите изменить основной цикл, то лучше это делать через хук pre_get_posts.
Как-нибудь так:
function dco_pre_get_posts($query) {
if ( !is_admin() && $query->is_main_query() ) {
if ($query->is_category()) {
$query->set('posts_per_page', '3');
}
}
}
add_action('pre_get_posts','dco_pre_get_posts');
Нужно чтобы пагинация была, эта функция выведет только 3 поста, а если их 50 ?
Сделал через
$cat = get_query_var(‘cat’);
$args = array(‘cat’ => $cat, ‘posts_per_page’ => 3, ‘paged’ => $paged );
но почему то при переходе на вторую страницу пагинации 404 выдает.
Нужно чтобы пагинация была, эта функция выведет только 3 поста, а если их 50 ?
Не очень понял вопрос, добавьте пагинацию и будет пагинация:
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php the_title(); ?>
<?php endwhile; ?>
<?php the_posts_pagination(); ?>
<?php endif; ?>
но почему то при переходе на вторую страницу пагинации 404 выдает.
Это происходит потому что Вы нарушаете основной цикл, делая дополнительный запрос. Но если хотите, зайдите в Настройки чтения и поставьте опции «На страницах блога отображать не более» значение 1, должно начать работать.
denisco, Огромное спасибо за
Это происходит потому что Вы нарушаете основной цикл, делая дополнительный запрос. Но если хотите, зайдите в Настройки чтения и поставьте опции «На страницах блога отображать не более» значение 1, должно начать работать.
Уже англо язычные форумы перечитал, про пагинацию в category.php, все оказалось проще)))
Пагинацию я вывожу так:
<?php
$big = 999999999; // need an unlikely integer
echo paginate_links( array(‘base’ => str_replace( $big, ‘%#%’, esc_url( get_pagenum_link( $big ) ) ),
‘format’ => ‘?paged=%#%’,
‘current’ => max( 1, get_query_var(‘paged’) ),
‘total’ => $the_query->max_num_pages,
‘prev_text’ => »,
‘next_text’ => ») );
?>