В WooCommerce страницы архива категорий товаров по умолчанию отображают все категории и товары, относящиеся к ним. Иногда возникает задача убрать некоторые категории из списка архива, чтобы скрыть их от пользователей без удаления самих категорий или товаров. В этой статье мы рассмотрим несколько практических способов, как удалить категории из архива WooCommerce, используя фильтры, пользовательский код и плагины.
Почему важно удалять категории из архива WooCommerce
Удаление категорий из страницы архива WooCommerce может потребоваться, если:
- Вы хотите скрыть категории с определённым статусом или для определённой аудитории.
- Категории содержат товары, которые временно не продаются, но их нельзя удалять.
- Необходима фильтрация категорий по бизнес-логике без изменения структуры каталога.
Простое удаление категории в админке приведёт к удалению товаров и может повлиять на SEO. Поэтому правильнее использовать методы, скрывающие категории на фронтенде.
Удаление категорий из архива с помощью WPMA фильтра woocommerce_product_categories_widget_args
Одним из вариантов является использование фильтра woocommerce_product_categories_widget_args, который позволяет изменить параметры отображения категорий. Однако он влияет на виджет категорий, а не на основную страницу архива.
Чтобы убрать категории именно с архивной страницы, нужно применить фильтр get_terms_args — он позволяет изменить параметры запроса категорий.
Пример кода для удаления категорий из архива WooCommerce по ID
function wpma_exclude_categories_from_archive( $args, $taxonomies ) {
if ( in_array( 'product_cat', $taxonomies ) ) {
// ID категорий, которые нужно исключить
$excluded_cat_ids = array( 15, 23, 42 );
if ( ! isset( $args['exclude'] ) ) {
$args['exclude'] = $excluded_cat_ids;
} else {
$args['exclude'] = array_merge( (array) $args['exclude'], $excluded_cat_ids );
}
}
return $args;
}
add_filter( 'get_terms_args', 'wpma_exclude_categories_from_archive', 10, 2 );В этом коде мы исключаем категории с ID 15, 23 и 42 из всех запросов термов product_cat, в том числе с архивных страниц. Если нужно исключать категории по слагу, можно доработать код, получая ID по названию.
Удаление категорий из архива с помощью плагина Clearfy Pro
Если хочется избежать правки кода, можно использовать плагин Clearfy Pro, который предоставляет удобные настройки для оптимизации WooCommerce, в том числе скрытие категорий и товаров на фронтенде.
В Clearfy Pro есть модуль для управления видимостью таксономий. Включив его, можно быстро задать категории для скрытия без кодинга.
Удаление категорий из архива, скрывая их через pre_get_terms
Ещё один способ — использовать фильтр pre_get_terms, который позволяет отменять запрос термов и возвращать пустой массив для определённых категорий.
Пример кода с фильтром pre_get_terms
function wpma_prevent_categories_in_archive( $terms, $taxonomies, $args, $term_query ) {
if ( in_array( 'product_cat', $taxonomies ) ) {
$exclude_slugs = array( 'skrytye-kategorii', 'archive-hide' );
foreach ( $terms as $key => $term ) {
if ( in_array( $term->slug, $exclude_slugs ) ) {
unset( $terms[ $key ] );
}
}
}
return $terms;
}
add_filter( 'pre_get_terms', 'wpma_prevent_categories_in_archive', 10, 4 );Таким образом, категории с указанными слагами не попадут в список на архивной странице.
Как проверить, что категории успешно скрыты
После добавления кода или настройки плагина необходимо очистить кеш сайта и браузера, чтобы изменения вступили в силу. Проверьте страницы архива категорий, убедитесь, что скрытые категории не отображаются.
Для тестирования можно использовать режим инкогнито или инструменты разработчика, чтобы исключить влияние кеша.
Заключение: какой способ выбрать
Если у вас небольшой сайт и вы комфортно работаете с кодом, лучше использовать фильтры get_terms_args или pre_get_terms с кастомным кодом. Они гибко решают задачу и не требуют дополнительных плагинов.
Если вы предпочитаете готовые решения и хотите централизованно управлять видимостью категорий и товаров, обратите внимание на плагин Clearfy Pro.
В любом случае, скрытие категорий из архива WooCommerce — полезный инструмент для точной настройки каталога и улучшения пользовательского опыта.