Поддержка Проблемы и решения Разное количество записей в категориях archive.php

  • Подскажите, возможно ли изменять количество выводимых записей в категориях архива?
    Вот такой пример

    function custom_posts_per_page($query){
    
    	if( $query->is_archive('articles')){
    		$query->set('posts_per_page', 2);
    	}
    	if( $query->is_archive('music')){
    		$query->set('posts_per_page', 5);
    	}
    	return $query;
    }
    add_action('pre_get_posts','custom_posts_per_page');

    В is_archive нельзя вроде как добавлять подобные параметры.

    Если разместить перед loop вот такой код:

    global $query_string;
    query_posts("{$query_string}&posts_per_page=1");

    то записи делятся на нужное количество, но неправильно работает пагинация, то есть при переходе на другую страницу архива выдает 404.

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Юрий

    (@yube)

    Попробуйте is_category. Если не получится, можно попробовать проверять query_vars.

    В перевыборка в шаблоне — это очень некрасиво 🙂

    Юрий, спасибо за подсказку, разобрался я наконец то с выводом в разных категориях количество записей, но подскажите еще…
    Хотел упростить код, чтобы каждый раз не редактировать, когда добавляю новые категории и дописывать в такую функцию:

    function custom_posts_per_page($query){
     if( $query->is_category(array('5', '6')) ){
      $query->set('posts_per_page', 1);
     }
    }

    Нашел функцию, которая определяет подкатегории и выводит как массив, немного переделал ее:

    $term_id = 1;
    $taxonomy_name = 'category';
    $term_children = get_term_children( $term_id, $taxonomy_name );
    foreach ( $term_children as $child ) {
     $term = get_term_by( 'id', $child, $taxonomy_name );
     echo '' . $term->term_id . ',';
    }

    суть такая, что в $term_id указывается главная категория и уже определяются и выводятся все ее подкатегории, теперь самое сложное, как вывести эти подкатегории в is_category(array()) есть ли какое то простое решение, чтобы не лезть в код каждый раз?

Просмотр 2 ответов — с 1 по 2 (всего 2)