Проблема: разные цены у вариаций товара в WooCommerce
По умолчанию WooCommerce требует указывать цену для каждой вариации товара отдельно. В некоторых сценариях, например, при продаже товара с разными цветами или размерами, нужно установить одинаковую цену для всех вариаций, чтобы упростить управление и избежать расхождений.
Однако в стандартном интерфейсе WooCommerce нет опции массового присвоения цены для всех вариаций. Из-за этого администратор вынужден вручную задавать цену каждой вариации, что неудобно и приводит к ошибкам.
Диагностика проблемы
- Откройте редактирование вариативного товара в админке WooCommerce.
- Перейдите на вкладку "Вариации".
- Проверьте цены у каждой вариации — они заданы индивидуально или пусты.
- Если цены разные или отсутствуют, но по логике должны быть одинаковыми, значит необходимо массово их синхронизировать.
Как массово установить единую цену на все вариации
Способ 1: Использование кода для массового обновления цен
Добавьте следующий код в файл functions.php вашей дочерней темы или используйте сниппет-плагин (например, Code Snippets):
function set_uniform_price_for_variations( $product_id, $price ) {
$product = wc_get_product( $product_id );
if ( ! $product || 'variable' !== $product->get_type() ) {
return;
}
$variations = $product->get_children();
foreach ( $variations as $variation_id ) {
$variation = wc_get_product( $variation_id );
if ( $variation ) {
$variation->set_regular_price( $price );
$variation->set_sale_price( '' ); // Очистить скидки
$variation->save();
}
}
}
// Пример вызова: установить цену 1500 рублей для товара с ID 123
add_action( 'init', function() {
if ( is_admin() && isset( $_GET['update_variation_price'] ) ) {
set_uniform_price_for_variations( 123, 1500 );
wp_redirect( remove_query_arg( 'update_variation_price' ) );
exit;
}
} );После добавления кода перейдите в админке по адресу https://ваш_сайт/wp-admin/?update_variation_price=1. Это вызовет обновление цен вариаций товара с ID 123 на 1500 рублей и очистит цены со скидкой.
Способ 2: Плагин для массового редактирования вариаций
Если не хотите писать код, можно использовать бесплатные и платные плагины, например:
- WooCommerce Bulk Editor — позволяет массово редактировать цены вариаций.
- Clearfy Pro — содержит инструменты для оптимизации и управления WooCommerce, в том числе массовое редактирование.
Как проверить, что цены обновились
- Перейдите в админке в редактирование вариативного товара.
- Откройте вкладку «Вариации» и убедитесь, что у всех вариаций одинаковая цена в поле «Регулярная цена».
- На витрине магазина откройте страницу товара и переключитесь между вариациями — цена должна оставаться одинаковой.
Частые ошибки и как их исправить
- Цена не обновилась у некоторых вариаций: Проверьте, что вариации действительно принадлежат к текущему товару и что код выполняется в админке (hook
initс проверкойis_admin()). - Скидочные цены остаются: в коде очищайте
sale_price, иначе отображается старая скидка. - После обновления цены на сайте не поменялась цена: Очистите кеш сайта и браузера, а также кеш объектов WooCommerce (если используете кеш-плагины).
Практические советы по производительности и безопасности
- Не запускайте массовое обновление цен на продуктах с большим количеством вариаций на сайте с высоким трафиком без предварительного тестирования — это может замедлить работу сервера.
- После выполнения операции удаляйте или комментируйте код массового обновления, чтобы избежать повторных изменений.
- Для безопасности используйте nonce и проверку прав пользователя, если добавляете интерфейс для массового обновления.
Сравнение способов массового обновления цен вариаций
| Метод | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
| Код в functions.php | Быстро, без плагинов, точечное управление | Требует навыков, риск ошибок при неправильном коде | Для опытных разработчиков, однократные задачи |
| Плагины массового редактирования | Удобный интерфейс, дополнительные функции | Нагрузка на сайт, возможные конфликты | Для регулярного редактирования, новичков |