Статья A.S Groups

Скидки по расписанию в WooCommerce: как автоматизировать начало и окончание акции

Скидки по расписанию в WooCommerce: автоматическое начало и завершение акции

Навигация по статье

Услуги A.S Groups

Нужен сайт, магазин или автоматизация?

Помогаю бизнесу запускать и дорабатывать WordPress-проекты: от посадочной страницы до WooCommerce, CRM и Telegram-уведомлений.

Обсудить проект Telegram
WordPress под ключ Лендинги, корпоративные сайты и структура под заявки. WooCommerce Интернет-магазины, каталог, оплата, доставка и интеграции. Доработка сайта Правки, скорость, формы, баги и развитие текущего проекта. CRM / Telegram / AI Автоматизация заявок, уведомлений и ручных процессов.

Скидки по расписанию в WooCommerce позволяют заранее задать акционную цену и даты, когда она должна автоматически включиться и отключиться. Это удобнее ручной смены цен перед распродажей: магазин сам переключает цену по графику, а после окончания акции возвращается к обычной стоимости.

Но на рабочем магазине важно не только заполнить поля Sale price и Schedule. Нужно учитывать часовой пояс сайта, вариации, фоновые задачи WooCommerce, кэш и способ массового обновления товаров. Иначе акция может визуально стартовать позже, закончиться не там, где ожидалось, или показывать старую цену в части кэша.

Как работает встроенное расписание скидки WooCommerce

В стандартном редакторе товара WooCommerce есть обычная цена Regular price и акционная Sale price. После нажатия Schedule появляются даты начала и окончания акции. По официальной документации поле From задаёт дату, с которой акционная цена должна начать отображаться, а To — дату, после которой она прекращает отображаться. Для даты окончания WooCommerce указывает завершение в 23:59 выбранного дня.

То есть для простой акции отдельный плагин расписаний не нужен. Если товар должен стоить 5 000 ₽ обычно и 4 200 ₽ с 20 по 27 сентября, достаточно сохранить regular price, sale price и диапазон дат.

Какие данные хранятся у товара

На уровне API WooCommerce разделяет обычную цену, акционную цену и даты акции. В REST API используются поля regular_price, sale_price, date_on_sale_from и date_on_sale_to. Для дат есть также GMT-варианты. Поля без суффикса GMT трактуются в часовом поясе сайта.

Это важно для интеграций. Если ERP, CRM, скрипт импорта или внешний сервис обновляет товары через REST API, он может передавать не только размер скидки, но и весь интервал акции. Тогда расписание можно формировать централизованно, например из маркетингового календаря.

Что запускает скидку в актуальном WooCommerce

В актуальном коде WooCommerce для запланированного старта и завершения скидок предусмотрены отдельные события Action Scheduler. При сохранении товара с датами акции WooCommerce может поставить фоновые действия на точное время начала и окончания. Обработчики ещё раз проверяют текущие даты и цену перед изменением состояния товара, поэтому устаревшее задание не должно вслепую применить уже изменённую скидку.

При этом в WooCommerce остаётся дополнительная логика обслуживания scheduled sales, поэтому диагностировать проблему только по одному cron-hook недостаточно. На практике нужно смотреть всю цепочку: сохранены ли даты, создано ли запланированное действие, запускается ли очередь, не падает ли callback и не показывает ли frontend старый кэш.

Если на магазине уже есть проблемы с фоновой очередью, полезно отдельно проверить WP-Cron и Action Scheduler в WooCommerce.

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

  1. Откройте Товары → Все товары и нужную карточку.
  2. В блоке данных товара укажите обычную цену.
  3. Введите акционную цену.
  4. Нажмите Schedule.
  5. Укажите даты начала и окончания.
  6. Сохраните или обновите товар.
  7. Проверьте карточку до начала акции, во время акции и после предполагаемого завершения.

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

Вариативные товары требуют настройки вариаций

У вариативного товара цены фактически принадлежат конкретным вариациям. WooCommerce в документации отдельно указывает, что price settings для вариаций находятся внутри каждой вариации. Поэтому акция на футболку с размерами S, M и L должна быть проверена на каждой продаваемой комбинации.

В актуальном коде обработчики scheduled sale пропускают родительские variable и grouped products, потому что их цена является производной. Это нормальное поведение: менять нужно реальные дочерние цены, а затем WooCommerce пересчитывает состояние родительского товара.

При массовых акциях это особенно важно. Если одна вариация осталась без sale price или получила другой диапазон дат, покупатель может увидеть диапазон цен, где часть вариантов уже со скидкой, а часть ещё нет.

Часовой пояс: частая причина «скидка включилась не вовремя»

REST API WooCommerce прямо разделяет даты в часовом поясе сайта и GMT. Поэтому перед автоматизацией стоит проверить Настройки → Общие → Часовой пояс в WordPress. Если сайт настроен на UTC, а маркетинг планирует акции по Москве или Ташкенту, ожидания по времени могут расходиться.

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

Автоматизация через WooCommerce REST API

Для массового управления акциями REST API удобнее ручного редактирования десятков карточек. В запросе обновления товара можно передать цену и даты акции. Пример структуры данных:

{
  "regular_price": "5000",
  "sale_price": "4200",
  "date_on_sale_from": "2026-09-20T00:00:00",
  "date_on_sale_to": "2026-09-27T23:59:00"
}

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

Для интеграций также полезно читать обратно on_sale, текущую price и сохранённые даты. Это позволяет контролировать не только факт отправки запроса, но и состояние товара после обработки.

Когда использовать WP-CLI

WP-CLI удобен для диагностики фоновых событий и серверной автоматизации. Команда wp cron event list показывает запланированные cron-события WordPress, а wp cron event run --due-now позволяет выполнить события, которые уже должны были сработать.

Но ручной запуск cron — диагностический инструмент, а не универсальный ремонт. Если конкретное действие Action Scheduler падает из-за PHP-ошибки, API, блокировки или неверных данных, принудительный запуск просто повторит ошибку.

Почему скидка может не включиться или не закончиться вовремя

  • Неверный часовой пояс. Администратор и сайт считают время в разных зонах.
  • Проблемы фоновой очереди. Action Scheduler или связанные cron-процессы не обрабатываются вовремя.
  • Ошибки конкретного callback. Очередь запускается, но действие падает.
  • Вариации настроены частично. Родительский товар показывает состояние, собранное из разных цен вариаций.
  • Импорт перезаписал даты или sale price. Внешняя система обновила товар после ручной настройки.
  • Page cache или CDN отдаёт старую страницу. В базе цена уже изменилась, но HTML ещё закэширован.
  • Persistent object cache хранит старые данные. Особенно заметно на магазинах со сложной кастомной логикой цен.
  • Кастомный код фильтрует цену. Тема, B2B-модуль, динамические скидки или персональные цены могут переопределять стандартный вывод.

Кэш после старта и окончания акции

Даже если WooCommerce корректно переключил состояние цены в базе, посетитель может увидеть старую страницу из полного page cache или CDN. Поэтому в магазинах с агрессивным кэшированием нужно проверить, как система инвалидирует карточки товара и архивы при изменении цены.

Особенно внимательно проверяйте главную страницу, категории, блоки «Хиты», «Акции», API-кэш мобильного приложения и внешние товарные фиды. Одна и та же цена может присутствовать в нескольких слоях.

Не стоит решать проблему постоянной полной очисткой всего кэша по cron: на большом магазине это создаёт ненужную нагрузку. Лучше инвалидировать только данные, которые действительно зависят от изменившегося товара.

Массовые акции: сначала данные, потом расписание

Для сотен товаров ручная настройка быстро становится источником ошибок. Надёжнее заранее подготовить таблицу или данные из учётной системы: SKU, regular price, sale price, start date, end date. Затем валидировать диапазоны и отправлять изменения пакетно.

Перед применением полезно проверить:

  • sale price действительно ниже regular price;
  • дата окончания позже даты начала;
  • SKU однозначно соответствует нужному товару или вариации;
  • не пересекаются две акции на один товар;
  • внешняя синхронизация не перезапишет цену через несколько минут;
  • после обновления получен успешный ответ API и данные перечитаны обратно.

Что делать с повторяющимися акциями

Стандартное расписание sale price рассчитано на конкретный диапазон дат. Для регулярных циклов — например скидка каждую пятницу с 18:00 до полуночи — лучше не создавать бесконечную цепочку ручных дат. Нужен отдельный механизм правил, собственная автоматизация или расширение, которое умеет повторяющиеся расписания.

При выборе решения важно разделять три задачи: изменение цены, ограничение доступности товара и маркетинговое отображение таймера. Это разные функции. Плагин, который только показывает countdown, не обязательно управляет фактической ценой, а scheduler доступности может вообще не менять sale price.

Проверка акции перед публикацией

  • обычная и акционная цена сохранены;
  • даты начала и окончания правильные;
  • часовой пояс WordPress соответствует бизнес-логике;
  • для вариативного товара проверены все нужные вариации;
  • очередь Action Scheduler не содержит просроченных или массово падающих задач;
  • внешний импорт не перезаписывает sale price и даты;
  • кэш карточки и каталога корректно обновляется;
  • цена проверена в карточке, категории и корзине;
  • для массовой акции есть список затронутых SKU и возможность отката;
  • после завершения тестовой акции regular price реально восстановилась.

Когда нужна доработка, а не стандартный Schedule

Встроенного механизма достаточно для обычной акции «с даты по дату» на товарах и вариациях. Кастомная разработка нужна, когда правила зависят от роли клиента, количества товара, категории, суммы корзины, региона, времени суток, повторяющегося графика или внешней системы.

В таких случаях лучше не смешивать десятки фильтров цены без единой архитектуры. A.S Groups занимается разработкой и доработкой WooCommerce: можно связать расписание цен с API, учётной системой, ролями клиентов или собственной бизнес-логикой. Для действующего проекта также доступна техническая поддержка WordPress.

Официальные источники

Следующий шаг

Нужно решить похожую задачу?

Предложить доработку WooCommerce для массовых, повторяющихся и интеграционных сценариев скидок, а также диагностику фоновых задач и кэша.

Обсудить задачу

Источники

Обсуждение

Вопросы и комментарии

Можно уточнить детали статьи или поделиться своим опытом. Первый комментарий проходит проверку.

Оставить комментарий

Email не публикуется. Ссылки и HTML в тексте удаляются.

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

Используем необходимые cookies, аналитику и данные форм, чтобы сайт работал корректно и заявки доходили.