Як вивести потрібну кількість постів на одній сторінці рубрики (категорії)

Привіт:) Покажу один зручний хак, який дозволяє гнучко керувати кількістю постів, що виводяться на сторінках рубрик (категорій) у WordPress — як глобально, так й індивідуально для кожної з них.

За замовчуванням у WordPress кількість постів на сторінках архівів задається в адмін-розділі Налаштування -> Читання -> Відображати не більше X записів. Але це налаштування впливає одразу на всі архіви: записи, категорії, теги тощо.

до змісту ↑

Як змінити кількість постів у рубриках через functions.php

Ви можете змінити кількість постів окремо для рубрик за допомогою хука pre_get_posts.

Весь код нижче слід вставляти файл functions.php.

🔧 Приклад: однакове значення для всіх категорій

add_action( 'pre_get_posts', function( $query ) {
    if ( ! is_admin() && $query->is_main_query() && is_category() ) {
        $query->set('posts_per_page', 5);
    }
}, 9999 );

Замість 5 підставте потрібне вам число.

🎯 Для конкретної рубрики за ID або слагом

add_action( 'pre_get_posts', function( $query ) {
if ( ! is_admin() && $query->is_main_query() && is_category( 'rubrika-1' ) ) {
$query->set( 'posts_per_page', 3 );
}
}, 9999 );

Працює і з ID:

is_category( 15 );

А також з кількома рубриками:

is_category( [ 'rubrika-1', 'rubrika-2' ] );

🔁 Для кількох рубрик — різна кількість постів

add_action( 'pre_get_posts', function( $query ) {
    if ( ! is_admin() && $query->is_main_query() ) {

        if ( $query->is_category( 'novyny' ) ) {
            $query->set( 'posts_per_page', 2 );
        }

        if ( $query->is_category( 'blog' ) ) {
            $query->set( 'posts_per_page', 6 );
        }

        if ( $query->is_category( [ 'aktsii', 'znyzhky' ] ) ) {
            $query->set( 'posts_per_page', 4 );
        }

    }
}, 9999 );

🧪 Поради та зауваження

  • Використовуйте 9999 як пріоритет, щоб ваш код виконався після можливих плагінів.
  • Не змінюйте параметр для бекенду: перевірка ! is_admin() обов’язкова.
  • Переконайтесь, що працюєте з основним запитом: is_main_query().
  • Ви можете комбінувати перевірки на is_tag(), is_post_type_archive() та інші архіви.
Михайло Петров
Михайло Петров

Мене звати Михайло. Я — WordPress-розробник. Створюю візитки, корпоративні сайти, інтернет-магазини, блоги на WordPress. Надаю консультації з WordPress.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *