Почему важно управлять товарами по атрибутам в WooCommerce
В интернет-магазинах на WooCommerce часто возникает необходимость массово скрывать или удалять товары по определённым характеристикам, например, по цвету, размеру, бренду или другим атрибутам. Это удобно для сезонных распродаж, обновления ассортимента или временного снятия с продажи отдельных категорий товаров. Ручное редактирование каждого товара занимает много времени, поэтому автоматизация таких процессов существенно экономит ресурсы.
В этой статье разберём, как программно удалить или скрыть товары в WooCommerce по атрибутам с помощью PHP-кода и плагинов. Приведём готовые примеры, которые легко адаптировать под свои задачи.
Как определить товары по атрибутам программно
В WooCommerce атрибуты товаров хранятся как таксономии. Например, атрибут «Цвет» обычно именуется как pa_color. Чтобы выбрать все товары с определённым значением атрибута, нужно сформировать WP_Query с нужными параметрами.
Пример запроса для получения товаров с атрибутом цвет «красный»:
$args = [
'post_type' => 'product',
'posts_per_page' => -1,
'tax_query' => [
[
'taxonomy' => 'pa_color',
'field' => 'slug',
'terms' => 'red',
],
],
];
$query = new WP_Query($args);Этот запрос поможет получить все публикации товаров, у которых цвет «red».
Как скрыть товары по атрибутам от отображения на сайте
Если нужно не удалять товары, а временно скрыть их из каталога и поиска, можно изменить параметр видимости. WooCommerce использует метаполе _visibility (в новых версиях — таксономия product_visibility) для управления видимостью товаров.
Пример функции для скрытия всех товаров с атрибутом «цвет: красный» из каталога и поиска:
function wpmarket_hide_products_by_attribute() {
$args = [
'post_type' => 'product',
'posts_per_page' => -1,
'tax_query' => [
[
'taxonomy' => 'pa_color',
'field' => 'slug',
'terms' => 'red',
],
],
'fields' => 'ids',
];
$products = get_posts($args);
foreach ($products as $product_id) {
// Меняем статус видимости
wp_set_object_terms($product_id, 'exclude-from-catalog', 'product_visibility', false);
wp_set_object_terms($product_id, 'exclude-from-search', 'product_visibility', true);
}
}
add_action('init', 'wpmarket_hide_products_by_attribute');Этот код добавляет товары в исключения каталога и поиска, они перестанут отображаться на сайте, но останутся в базе.
Как удалить товары по атрибутам программно
Если нужно полностью удалить товары, можно использовать WP_Query для выборки и функцию wp_delete_post() для удаления.
Важно: удаление нельзя отменить, перед выполнением сделайте резервную копию базы данных.
function wpmarket_delete_products_by_attribute() {
$args = [
'post_type' => 'product',
'posts_per_page' => -1,
'tax_query' => [
[
'taxonomy' => 'pa_color',
'field' => 'slug',
'terms' => 'red',
],
],
'fields' => 'ids',
];
$products = get_posts($args);
foreach ($products as $product_id) {
wp_delete_post($product_id, true); // true — удаление навсегда
}
}
// Запускать осторожно, например через WP-CLI или админский хук
// add_action('init', 'wpmarket_delete_products_by_attribute');Этот код удалит все товары с заданным значением атрибута.
Использование плагинов для управления товарами по атрибутам
Если вы не хотите писать код, можно использовать готовые решения:
- Bulk Table Editor for WooCommerce — позволяет фильтровать товары по атрибутам и массово изменять их статус или удалять.
- Advanced Bulk Edit — удобный плагин для массового редактирования товаров с поддержкой фильтров по атрибутам.
- WP Sheet Editor — табличный редактор товаров, позволяет быстро фильтровать и изменять поля.
Эти плагины экономят время и снижают риск ошибок при массовом управлении товарами.
Практический пример: скрытие товаров с помощью плагина Clearfy Pro
Если на вашем сайте установлен плагин Clearfy Pro, его функционал для оптимизации WooCommerce позволяет гибко управлять видимостью товаров.
Вы можете использовать режим фильтрации товаров по атрибутам и применять массовые действия через интерфейс Clearfy, что особенно удобно для больших магазинов.
Кроме того, Clearfy помогает убрать лишние запросы и оптимизировать работу каталога, что положительно влияет на скорость загрузки страниц с товарами.
Какие ошибки могут возникнуть и как их избежать
При работе с массовым удалением или скрытием товаров важно учесть следующие моменты:
- Резервное копирование: всегда делайте бэкап базы данных перед массовыми изменениями.
- Проверка taxonomy: убедитесь, что используете правильное имя таксономии атрибута. Его можно узнать в разделе «Атрибуты» WooCommerce.
- Кэширование: после изменений очистите кэш сайта и браузера, чтобы увидеть обновления.
- Тестирование на локальной копии: сначала проверьте код на тестовой среде, чтобы избежать сбоев на живом сайте.
Помните, что массовые операции могут повлиять на SEO и индексацию товаров, поэтому планируйте их с учётом маркетинговых целей.
Итог
Управление товарами в WooCommerce по атрибутам — мощный инструмент для оптимизации магазина. С помощью программных методов и плагинов можно быстро скрывать или удалять ненужные товары. Представленные примеры кода легко адаптируются под любые атрибуты и задачи. Если вы хотите расширить функционал магазина без сложных правок, обратите внимание на проверенные плагины типа Clearfy Pro или Advanced Bulk Edit.