Диагностика проблемы: почему не меняется количество товаров
По умолчанию WooCommerce выводит 12 товаров на странице категории. Иногда возникает необходимость изменить это число, чтобы увеличить или уменьшить количество отображаемых товаров для удобства пользователей и улучшения конверсии.
В теме GeneratePress изменение количества товаров на странице категории не происходит через стандартные настройки темы, так как GeneratePress не переопределяет этот параметр. Часто пользователи пытаются менять значения в панели Customizer или в настройках темы, но это не работает.
Если вы используете плагины кэширования или оптимизации, они могут кэшировать страницы и мешать изменениям отображения товара. Также возможно, что кастомный код или дочерняя тема переопределяет количество товаров.
Пошаговое решение: как изменить количество товаров на странице категорий
Использование фильтра WooCommerce
Самый надежный способ изменить количество товаров на странице категории — добавить фильтр loop_shop_per_page в functions.php вашей дочерней темы или через плагин для пользовательских функций.
function gp_custom_products_per_page( $cols ) {
// Указываем нужное количество товаров
return 20;
}
add_filter( 'loop_shop_per_page', 'gp_custom_products_per_page', 20 );
В этом примере установлено 20 товаров на страницу. Измените значение 20 на необходимое вам.
Альтернативный способ: изменение через кастомный плагин
Если вы не хотите трогать functions.php, можно создать небольшой плагин, например custom-products-per-page.php:
<?php
/**
* Plugin Name: Custom Products Per Page
* Description: Изменяет количество товаров на странице категории WooCommerce
* Version: 1.0
* Author: Ваше Имя
*/
add_filter( 'loop_shop_per_page', function() {
return 20; // или любое другое число
}, 20 );
Загрузите и активируйте этот плагин через админку WordPress.
Проверка результата после внедрения
- Очистите кэш браузера и плагинов кэширования (например, WP Super Cache, W3 Total Cache, LiteSpeed Cache).
- Перейдите на страницу категории товара и убедитесь, что количество товаров изменилось на указанное в коде.
- Если используется пагинация, проверьте, что количество страниц изменилось адекватно.
- Откройте инструменты разработчика браузера (F12) и убедитесь, что в HTML-разметке выводится нужное количество товаров.
Частые ошибки и как их исправить
- Изменения не применяются: скорее всего, активен кэш, либо фильтр переопределяется в другом месте. Отключите кэш и временно деактивируйте плагины, которые могут конфликтовать.
- Код добавлен в functions.php основной темы: при обновлении темы изменения пропадут. Используйте дочернюю тему или плагин.
- Неверное значение возвращаемое фильтром: убедитесь, что возвращается целое число, иначе WooCommerce может игнорировать фильтр.
- Наличие плагинов, которые меняют вывод товаров: проверьте совместимость и отключите их для теста.
Практические советы по производительности и безопасности
- Не устанавливайте слишком большое количество товаров на страницу (больше 30–40), чтобы не замедлять загрузку и не ухудшать UX.
- При использовании кэширования обязательно очищайте кэш после внесения изменений, чтобы увидеть результат.
- Добавляйте кастомный код через дочернюю тему или плагин, чтобы избежать потери изменений при обновлении.
- Если планируете динамически менять количество товаров, учитывайте мобильную адаптацию и используйте условные конструкции для разных устройств.
Сравнение способов изменения количества товаров на странице категории
| Метод | Простота | Гибкость | Риски |
|---|---|---|---|
| Добавление фильтра в functions.php дочерней темы | Средняя | Высокая | Потеря при обновлении основной темы |
| Создание кастомного плагина | Средняя | Высокая | Требуется базовые знания плагинов |
| Использование плагинов изменения WooCommerce (например, Customizer) | Высокая | Средняя | Дополнительная нагрузка, возможные конфликты |