WooCommerce: установка единой цены для вариативных товаров

Проблема: разные цены у вариаций товара в 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, в том числе массовое редактирование.

Как проверить, что цены обновились

  1. Перейдите в админке в редактирование вариативного товара.
  2. Откройте вкладку «Вариации» и убедитесь, что у всех вариаций одинаковая цена в поле «Регулярная цена».
  3. На витрине магазина откройте страницу товара и переключитесь между вариациями — цена должна оставаться одинаковой.

Частые ошибки и как их исправить

  • Цена не обновилась у некоторых вариаций: Проверьте, что вариации действительно принадлежат к текущему товару и что код выполняется в админке (hook init с проверкой is_admin()).
  • Скидочные цены остаются: в коде очищайте sale_price, иначе отображается старая скидка.
  • После обновления цены на сайте не поменялась цена: Очистите кеш сайта и браузера, а также кеш объектов WooCommerce (если используете кеш-плагины).

Практические советы по производительности и безопасности

  • Не запускайте массовое обновление цен на продуктах с большим количеством вариаций на сайте с высоким трафиком без предварительного тестирования — это может замедлить работу сервера.
  • После выполнения операции удаляйте или комментируйте код массового обновления, чтобы избежать повторных изменений.
  • Для безопасности используйте nonce и проверку прав пользователя, если добавляете интерфейс для массового обновления.

Сравнение способов массового обновления цен вариаций

МетодПлюсыМинусыКогда использовать
Код в functions.php Быстро, без плагинов, точечное управление Требует навыков, риск ошибок при неправильном коде Для опытных разработчиков, однократные задачи
Плагины массового редактирования Удобный интерфейс, дополнительные функции Нагрузка на сайт, возможные конфликты Для регулярного редактирования, новичков
⭐⭐⭐⭐⭐