WooCommerce: массовое изменение цен товаров через код без плагинов

Диагностика задачи: зачем нужно массовое изменение цен в WooCommerce

Владельцы магазинов часто сталкиваются с необходимостью обновить цены большого количества товаров — например, при изменении себестоимости, сезонных скидках или инфляции. Использовать плагины для этого удобно, но не всегда приемлемо из-за нагрузки, безопасности или ограничений хостинга. В таких случаях полезно иметь готовый рабочий код для массового обновления цен.

Как массово изменить цены товаров в WooCommerce через PHP

Подготовка: резервное копирование и тестовая среда

Перед выполнением любых массовых операций с базой данных обязательно сделайте резервную копию сайта и базы данных. Запускайте код сначала на локальной копии или тестовом сервере, чтобы избежать потерь данных.

Пример кода для массового увеличения цены на 10%

Ниже пример, который увеличит цену всех опубликованных товаров на 10%. Код можно добавить в functions.php вашей темы или использовать как отдельный скрипт с подключением WordPress.

function wpexamples_mass_update_prices() {
    // Получаем все ID продуктов
    $args = array(
        'post_type' => 'product',
        'posts_per_page' => -1,
        'post_status' => 'publish',
        'fields' => 'ids'
    );
    $product_ids = get_posts($args);

    foreach ($product_ids as $product_id) {
        $product = wc_get_product($product_id);
        if (!$product) continue;

        $regular_price = $product->get_regular_price();
        if ($regular_price === '') continue;

        // Пример: увеличить цену на 10%
        $new_price = round($regular_price * 1.10, 2);

        // Обновляем цены
        $product->set_regular_price($new_price);
        // Если есть скидочная цена, можно обновить или удалить
        if ($product->get_sale_price()) {
            $product->set_sale_price(''); // Снимаем скидку
        }
        $product->save();
    }
    echo 'Цены успешно обновлены';
}

// Запускаем функцию один раз
wpexamples_mass_update_prices();

Обработка вариативных продуктов

Если в магазине есть вариативные товары, их цены хранятся в вариациях. Для обновления цен вариаций нужно перебрать их отдельно:

function wpexamples_update_variable_product_prices() {
    $args = array(
        'post_type' => 'product',
        'posts_per_page' => -1,
        'post_status' => 'publish',
        'fields' => 'ids'
    );
    $product_ids = get_posts($args);

    foreach ($product_ids as $product_id) {
        $product = wc_get_product($product_id);
        if (!$product) continue;

        if ($product->is_type('variable')) {
            $variations = $product->get_children();
            foreach ($variations as $variation_id) {
                $variation = wc_get_product($variation_id);
                if (!$variation) continue;

                $regular_price = $variation->get_regular_price();
                if ($regular_price === '') continue;

                $new_price = round($regular_price * 1.10, 2);

                $variation->set_regular_price($new_price);
                if ($variation->get_sale_price()) {
                    $variation->set_sale_price('');
                }
                $variation->save();
            }
        }
    }
    echo 'Цены вариаций успешно обновлены';
}

// Запуск функции
wpexamples_update_variable_product_prices();

Пошаговое решение

  1. Создайте резервную копию сайта и базы данных.
  2. Откройте файл functions.php активной темы или создайте отдельный PHP-скрипт с подключением WordPress.
  3. Добавьте код функции для массового обновления цен (пример выше).
  4. Запустите функцию один раз, например, вызвав ее внизу файла.
  5. После выполнения удалите или закомментируйте вызов функции, чтобы избежать повторного запуска.
  6. Проверьте изменение цен в админке WooCommerce и на витрине.

Как проверить результат после внедрения

  • Зайдите в админку WooCommerce → Товары и проверьте цены на нескольких товарах.
  • Проверьте товарные страницы на фронтенде — отображаются ли новые цены.
  • Проверьте вариации товаров, если есть.
  • Для дополнительной проверки можно вывести цены программно:
$product = wc_get_product($product_id);
echo 'Текущая цена: ' . $product->get_price();

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

  • Функция запускается многократно: если не удалить вызов функции, цены будут увеличиваться при каждом обновлении страницы. Решение — запускать функцию один раз и сразу отключать.
  • Пропущены вариации: цены обновились только у простых товаров. Решение — добавить обработку вариаций (код выше).
  • Отсутствие резервного копирования: потеря данных при ошибке. Обязательно делайте бэкап до изменений.
  • Неправильный формат цен: цены могут не обновиться, если они пустые или нечисловые. Добавьте проверки if ($regular_price !== '').
  • Кэширование: после обновления цен кэшированные страницы могут показывать старые цены. Очистите кэш сайта и браузера.

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

  • Не выполняйте массовые операции в цикле на живом сайте без ограничения, чтобы не перегрузить сервер. Разбивайте обновления на партии (например, по 50 товаров за раз).
  • Используйте WP-CLI для массовых операций, если есть доступ к командной строке — это надежнее и быстрее.
  • После обновления цен убедитесь, что кэш страниц и WooCommerce очищен.
  • Ограничьте доступ к коду и запуску подобных функций только администраторам.
  • Для периодических обновлений рассмотрите написание WP-Cron задачи с контролем времени выполнения.

Сравнение подходов: плагин vs код vs WP-CLI

МетодПлюсыМинусы
Плагин массового редактированияПростота использования, UI для выбора товаровНагрузка на сайт, возможные конфликты, платные расширения
PHP код (как в статье)Точный контроль, без лишних плагиновРиски при ошибках, требует навыков разработчика
WP-CLIБыстро и надежно, можно запускать из командной строкиНужен доступ к серверу, требует консольных навыков

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как создать свое API в WordPress: подробное руководство с примерами кода
02.12.2025
WooCommerce: как исправить повышенное время отклика корзины при массовом обновлении заказов
21.05.2026
Как создать главную страницу магазина на WordPress с помощью WooCommerce и кастомных блоков
13.02.2026
Как создать группы пользователей в WordPress с помощью ролей и capability
24.02.2026
Как создать многоуровневую пагинацию в WordPress с примерами кода
10.02.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее