WooCommerce: автоматическое отключение товара после продажи

Что значит автоматическое отключение товара в WooCommerce?

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

Диагностика: когда и почему нужно отключать товар автоматически

Основные причины для автоматического отключения:

  • Товар имеет ограниченный запас (например, 1 штука) и после продажи становится недоступен.
  • Товар продается в рамках акции или эксклюзива, и после первой продажи снимается с продажи.
  • Необходим контроль наличия без постоянного ручного обновления.

Проверка актуального статуса товара вручную через админку WooCommerce неудобна и подвержена ошибкам.

Как реализовать автоматическое отключение товара после успешной продажи

Для автоматического отключения нужно отслеживать событие успешной оплаты и изменять статус товара на "черновик" или "вне продажи".

Использование хука woocommerce_order_status_completed

Этот хук срабатывает при смене статуса заказа на "завершён", что означает успешную оплату и обработку.

add_action('woocommerce_order_status_completed', 'auto_disable_product_after_sale', 10, 1);function auto_disable_product_after_sale($order_id) {    if (!$order_id) {        return;    }    $order = wc_get_order($order_id);    if (!$order) {        return;    }    foreach ($order->get_items() as $item) {        $product_id = $item->get_product_id();        $product = wc_get_product($product_id);        if (!$product) {            continue;        }        // Проверяем, что товар активен        if ($product->get_status() !== 'publish') {            continue;        }        // Отключаем товар (меняем статус)        $product->set_status('draft'); // или 'private' для скрытия        $product->save();    }}

Такой код автоматически переводит все проданные товары из заказа в статус "черновик", делая их недоступными для покупки.

Ограничение по конкретным товарам

Если требуется отключать только определённые товары, например, из определённой категории или с мета-полем, добавьте проверку:

if (!has_term('exclusives', 'product_cat', $product_id)) {    continue;}

Это позволит точечно контролировать автоматизацию.

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

  • Оформите тестовый заказ с нужным товаром.
  • Убедитесь, что заказ получил статус "завершён" (completed).
  • Перейдите в админку WooCommerce - Товары и проверьте статус товара: он должен измениться на "черновик".
  • Попробуйте найти товар на сайте — он должен быть недоступен для покупки и не отображаться в каталоге.

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

  • Хук не срабатывает из-за неправильного статуса заказа. Убедитесь, что заказ действительно меняет статус на "completed". Если используется другой статус для подтверждения оплаты — меняйте хук или добавьте дополнительный.
  • Товар не меняет статус. Проверьте права пользователя, под которым запускается код, и отсутствие конфликтов с другими плагинами, которые могут перезаписывать статусы.
  • Автоматическое отключение отключает все товары, а нужно выборочно. Добавьте фильтрацию по категории, тегу или мета-полю, как показано выше.

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

  • Добавляйте логи при изменении статуса товара, чтобы отслеживать работу скрипта:
    error_log('Product '.$product_id.' disabled after sale.');
  • Проверяйте наличие товара перед изменением статуса, чтобы избежать ошибок с удалёнными продуктами.
  • Если товаров много в заказе, используйте транзакции базы данных или отложенные задачи, чтобы не перегружать сайт.

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

Метод Плюсы Минусы
Использование хука woocommerce_order_status_completed Простая реализация, срабатывает сразу после продажи Меняет статус всех товаров из заказа без фильтрации по умолчанию
Расширенная фильтрация по категориям/атрибутам Точный контроль над отключением, исключает ненужные товары Требует дополнительного кода и обслуживания
Плагины с расширенными возможностями (например, WPShop Clearfy Pro) Удобный интерфейс, дополнительные функции оптимизации Платные решения, могут грузить сайт лишним функционалом
WooCommerce: автоматическое отключение товара после продажи
10.06.2026
WooCommerce: как автоматически удалять товар после успешной оплаты без плагинов
22.05.2026
Как автоматизировать создание резервных копий в WordPress
05.02.2026
Оптимизация базы данных WordPress: ударное решение для ускорения сайта
04.01.2026
Как создать собственный шорткод в WordPress
23.11.2025