WooCommerce: автоматическое изменение названий и описаний товаров по расписанию

Диагностика задачи: зачем менять названия и описания товаров автоматически

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

Проверить необходимость автоматизации можно по следующим признакам:

  • Частые изменения в описании или названии товаров;
  • Зависимость информации от даты или события;
  • Большое количество товаров для обновления;
  • Необходимость синхронизации с внешними данными или расписанием.

Как реализовать автоматическое обновление названий и описаний товаров

Общая идея решения

Используем WordPress Cron (WP-Cron) для запуска функции по расписанию. В функции получаем нужные товары и обновляем их метаданные — название (post_title) и описание (post_content).

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

1. Создаем функцию обновления товаров

function wp_update_products_titles_descriptions() {
    // Список ID товаров или критерий выборки
    $args = [
        'post_type' => 'product',
        'posts_per_page' => -1,
        'post_status' => 'publish',
        // Можно добавить таксономии или мета-запросы для фильтрации
    ];
    $products = get_posts($args);

    foreach ($products as $product_post) {
        $product_id = $product_post->ID;

        // Пример логики: добавляем текущий месяц к названию
        $month = date('F');
        $new_title = $product_post->post_title . ' - ' . $month;

        // Новое описание — добавляем информацию о скидке
        $new_description = $product_post->post_content . "\n\nSpecial offer valid in $month!";

        // Обновляем пост
        wp_update_post([
            'ID' => $product_id,
            'post_title' => $new_title,
            'post_content' => $new_description
        ]);
    }
}

2. Регистрируем событие WP-Cron

function wp_register_daily_product_update_event() {
    if (!wp_next_scheduled('wp_daily_product_update_hook')) {
        // Запускаем ежедневно в 02:00
        wp_schedule_event(strtotime('02:00:00'), 'daily', 'wp_daily_product_update_hook');
    }
}
add_action('wp', 'wp_register_daily_product_update_event');

3. Привязываем функцию к событию

add_action('wp_daily_product_update_hook', 'wp_update_products_titles_descriptions');

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

  • В админке WooCommerce проверьте названия и описания товаров — они должны содержать добавленную информацию (например, текущий месяц и текст акции).
  • Для теста можно временно изменить расписание на запуск через минуту, используя wp_schedule_single_event(time()+60, 'wp_daily_product_update_hook');, и проверить изменения.
  • В логе ошибок PHP или с помощью плагина Debug Bar убедитесь, что функция вызывается без ошибок.
  • Проверьте, что на сайте отображается обновленная информация для пользователей.

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

  • Функция не запускается по расписанию: WP-Cron запускается при посещении сайта. Для точного срабатывания настройте системный cron на сервере, вызывающий wp-cron.php.
  • Изменения не сохраняются: Убедитесь, что используете wp_update_post с правильным ID и что у пользователя есть права на редактирование товаров.
  • Накрутка названий из-за повторного добавления текста: Добавляйте проверку, чтобы не дублировать расширения в названии и описании.
  • Проблемы с производительностью при большом количестве товаров: Используйте постраничную выборку (paged и posts_per_page) и делайте обновления пакетами, чтобы избежать таймаутов.

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

  • Добавляйте проверку nonce и прав пользователя, если запускаете обновление через AJAX или админку.
  • Для больших магазинов ставьте лимит обработки товаров за один запуск и запускайте функцию несколько раз по крону.
  • Резервное копирование базы данных перед автоматическими изменениями минимизирует риски.
  • Используйте транзиенты или мета-поля для хранения состояния обновления и предотвращения повторных изменений.
  • Отключайте WP-Cron и перенастраивайте системный cron для стабильной работы на продакшене.

Сравнение вариантов реализации автоматического обновления

МетодПлюсыМинусыКомпромисс
WP-Cron (код)Гибкость, не требует плагинов, полный контрольЗависит от посещаемости сайта, может быть ненадежнымНастроить системный cron для запуска wp-cron.php
Плагины для автоматизацииПростота настройки, готовые решенияНагрузка, ограниченные возможности кастомизацииИспользовать только проверенные плагины с хорошей репутацией
Внешние скрипты с APIНе влияет на производительность сайтаТребует дополнительной настройки и хостингаИспользовать при больших объемах данных
WooCommerce: автоматическое создание купонов после успешной покупки
11.05.2026
WooCommerce: автоматическое изменение названий и описаний товаров по расписанию
04.07.2026
Как создать собственный шорткод в WordPress
23.11.2025
Как создать собственный кustomный виджет в WordPress: пошаговое руководство
26.11.2025
Как добавить пользовательское поле в REST API WordPress
08.01.2026