• Вот таким образом вывожу первые 3 поста категории
    <?php
    $paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
    $args = array(‘category_name’ => ‘stories-of-successful’, ‘posts_per_page’ => 3, ‘paged’ => $paged );
    $the_query = new WP_Query( $args ); ?>

    <?php if ( $the_query->have_posts() ) : ?>
    <?php
    // the loop
    while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    Если имя категории не указывать, то всегда выводится 3 поста, и не проверяет, может в категории всего один пост. Можно сделать кучу циклов под конкретную категорию, но по моему это бред…
    как мне получить id категории(кликнутой), записать ее в переменную и передать ее в массив array ?

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Модератор Denis Yanchevskiy

    (@denisco)

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

    Так уже пробовали?

    $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 выдает.

    Модератор Denis Yanchevskiy

    (@denisco)

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

    Нужно чтобы пагинация была, эта функция выведет только 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’ => ») );
    ?>

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Проверка в файле category.php, вывести определенное количес» закрыта для новых ответов.