Работа с большими каталогами товаров в WooCommerce — задача, требующая не только внимания, но и правильных инструментов. Одной из самых рутинных операций, с которой сталкиваются менеджеры магазинов и разработчики, является управление атрибутами товаров. Что делать, если вам нужно очистить атрибуты у сотен или тысяч товаров? Устанавливать очередной плагин — не всегда лучшее решение. Это лишняя нагрузка, потенциальные уязвимости и затраты.
К счастью, для специалистов есть более прямой и эффективный путь. В этой статье мы разберем, как массово удалить атрибуты товаров в WooCommerce с помощью простого PHP-скрипта, без необходимости установки плагинов.
Проблема: отсутствие встроенного инструмента
Если вы когда-либо заходили на страницу редактирования товара в WooCommerce, вы знаете, что во вкладке «Атрибуты» нет кнопки «Удалить все».
Каждый атрибут приходится удалять вручную, нажимая на кнопку «Удалить» и затем сохраняя товар. Когда речь идет о десятках товаров, это просто неудобно. Когда их сотни или тысячи — это превращается в настоящую головную боль и часы монотонной работы.
Как видно из обсуждений на официальных форумах поддержки WordPress, многие пользователи сталкиваются с этой проблемой и ищут решение. Стандартный ответ поддержки — такой функции в ядре WooCommerce нет.
Решение: прямое выполнение кода на сервере
Самый чистый и контролируемый способ для массовых операций с базой данных WordPress — это использование специального PHP-скрипта. Метод заключается в следующем: вы создаете файл с кодом, загружаете его в корневую директорию вашего сайта, запускаете его один раз, а затем немедленно удаляете.
Этот подход дает вам полный контроль, не перегружает сайт плагинами и выполняет задачу за считанные секунды или минуты, в зависимости от объема вашего каталога.
Сценарий 1: удаление всех атрибутов со ВСЕХ товаров
Это самый распространенный сценарий. Например, после неудачного импорта или при реструктуризации каталога вам нужно полностью очистить информацию об атрибутах у всех существующих товаров.
Код для удаления атрибутов со всех товаров:
// Подключаем ядро WordPress, чтобы получить доступ к его функциям
require_once 'wp-load.php';
// Увеличиваем лимиты выполнения, чтобы скрипт не "упал" на большом количестве товаров
set_time_limit(0);
ini_set('memory_limit', '2048M');
echo 'Удаление атрибутов WooCommerce ';
echo 'Начинаем процесс удаления атрибутов...
';
// Получаем все опубликованные товары
$args = array(
'post_type' => 'product',
'posts_per_page' => -1, // Получить все товары
'post_status' => 'publish',
);
$products_query = new WP_Query($args);
if ($products_query->have_posts()) {
while ($products_query->have_posts()) {
$products_query->the_post();
$product_id = get_the_ID();
$product = wc_get_product($product_id);
if (!$product) {
echo "Не удалось получить товар с ID: $product_id. Пропускаем.
";
continue;
}
// Проверяем, есть ли у товара атрибуты
$attributes = $product->get_attributes();
if (empty($attributes)) {
echo "Товар ID: $product_id (".get_the_title().") не имеет атрибутов. Пропускаем.
";
continue;
}
// Устанавливаем пустой массив атрибутов
$product->set_attributes(array());
// Сохраняем изменения
$product->save();
echo "Атрибуты для товара ID: $product_id (".get_the_title().") успешно удалены.
";
}
wp_reset_postdata();
} else {
echo 'Товары не найдены.
';
}
echo 'Процесс завершен!
';
echo 'ВАЖНО: Не забудьте удалить этот файл с сервера!
';
echo '';
Что делает этот скрипт?
- Подключает окружение WordPress.
- Получает список всех опубликованных товаров.
- В цикле проходит по каждому товару.
- С помощью функции
$product->set_attributes(array());обнуляет список его атрибутов. - Сохраняет товар.
- Выводит лог выполнения в браузер.
Сценарий 2: полное удаление ГЛОБАЛЬНЫХ атрибутов из магазина
Внимание! Этот сценарий является разрушительным. Он не просто удаляет атрибуты у товаров, а полностью стирает сами определения атрибутов (например, «Цвет», «Размер») из раздела Товары -> Атрибуты. Используйте его, только если вы на 100% уверены, что эти глобальные атрибуты вам больше никогда не понадобятся.
Код для удаления глобальных атрибутов:
// Подключаем ядро WordPress
require_once 'wp-load.php';
echo 'Удаление глобальных атрибутов ';
echo 'Начинаем удаление глобальных атрибутов...
';
// Получаем все таксономии атрибутов
$attributes = wc_get_attribute_taxonomies();
if (empty($attributes)) {
echo 'Глобальные атрибуты не найдены.
';
} else {
foreach ($attributes as $attribute) {
$attribute_id = $attribute->attribute_id;
$attribute_label = $attribute->attribute_label;
// Удаляем атрибут по его ID
$deleted = wc_delete_attribute($attribute_id);
if ($deleted) {
echo "Атрибут '$attribute_label' (ID: $attribute_id) успешно удален.
";
} else {
echo "Не удалось удалить атрибут '$attribute_label' (ID: $attribute_id).
";
}
}
}
echo 'Процесс завершен!
';
echo 'ВАЖНО: Не забудьте удалить этот файл с сервера!
';
echo '';
Пошаговая инструкция по использованию
ВАЖНО: Сделайте полную резервную копию! Перед любыми манипуляциями с базой данных обязательно создайте бэкап вашего сайта и базы данных. Это золотое правило, которое спасет вас в случае ошибки.
Создайте файл. На своем компьютере создайте пустой файл с расширением
.php, например,delete-attributes.php.Скопируйте код. Откройте файл в текстовом редакторе и вставьте в него код из нужного вам сценария (чаще всего это будет Сценарий 1).
Загрузите файл на сервер. С помощью FTP-клиента (FileZilla, Cyberduck) или файлового менеджера в панели вашего хостинга загрузите созданный файл в корневую директорию вашего сайта (там же, где лежат файлы
wp-config.php,wp-load.php).Запустите скрипт. Откройте браузер и перейдите по адресу
https://ваш-сайт.com/delete-attributes.php. Вы увидите страницу с логом выполнения скрипта. Дождитесь сообщения о завершении процесса.Проверьте результат. Зайдите в админ-панель WooCommerce и убедитесь, что атрибуты у товаров удалены.
ОЧЕНЬ ВАЖНО: Удалите скрипт с сервера! Сразу после использования удалите файл
delete-attributes.phpс вашего сервера. Оставлять такие скрипты на сайте — огромная дыра в безопасности.
Массовое управление данными в WooCommerce не должно быть сложным. Вместо того чтобы полагаться на плагины для каждой мелкой задачи, технически подкованный специалист может использовать простые и мощные скрипты. Этот метод не только быстрее, но и дает вам полный контроль над процессом, а также помогает поддерживать сайт в чистоте, без лишнего кода.
Если же вы не уверены в своих силах или задача кажется слишком рискованной, лучше доверьте ее профессионалам. Наше агентство всегда готово помочь с технической поддержкой и кастомизацией сайтов на WooCommerce любой сложности.