WooCommerce: установка и настройка подтверждения возврата товара

Проблема: отсутствие контроля над процессом возврата товара в WooCommerce

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

Диагностика задачи

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

  • Используете ли вы встроенные статусы заказов или кастомные статусы для возвратов?
  • Как покупатели инициируют возврат — через комментарии, email или отдельную форму?
  • Хотите ли вы автоматизировать уведомления и изменить статус заказа только после подтверждения администратора?

Пошаговое решение: добавляем статус «Возврат на подтверждении» и обработку

1. Регистрация кастомного статуса заказа

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

add_action('init', function() {
  register_post_status('wc-return-pending', array(
    'label' => 'Возврат на подтверждении',
    'public' => true,
    'exclude_from_search' => false,
    'show_in_admin_all_list' => true,
    'show_in_admin_status_list' => true,
    'label_count' => _n_noop('Возврат на подтверждении <span class="count">(%s)</span>', 'Возвраты на подтверждении <span class="count">(%s)</span>')
  ));
});

2. Добавление статуса в список статусов WooCommerce

add_filter('wc_order_statuses', function($order_statuses) {
  $order_statuses['wc-return-pending'] = 'Возврат на подтверждении';
  return $order_statuses;
});

3. Создание кнопки подтверждения возврата в админке

Добавим кнопку в страницу редактирования заказа, чтобы администратор мог подтвердить возврат и изменить статус.

add_action('woocommerce_order_actions', function($actions) {
  $actions['confirm_return'] = 'Подтвердить возврат';
  return $actions;
});

add_action('woocommerce_order_action_confirm_return', function($order) {
  $order->update_status('refunded', 'Возврат подтверждён администратором');
});

4. Автоматизация уведомления покупателя

Создадим email уведомление для покупателя при смене статуса на «refunded» после подтверждения возврата.

add_action('woocommerce_order_status_refunded', function($order_id) {
  $order = wc_get_order($order_id);
  $mailer = WC()->mailer();
  $mails = $mailer->get_emails();
  if (!empty($mails['WC_Email_Customer_Refunded_Order'])) {
    $mails['WC_Email_Customer_Refunded_Order']->trigger($order_id);
  }
});

Проверка результата

  • Создайте заказ в WooCommerce и назначьте статус Возврат на подтверждении.
  • В админке откройте заказ и убедитесь, что появилась кнопка «Подтвердить возврат» в действиях заказа.
  • Нажмите на кнопку и проверьте, что статус изменился на «Возврат завершён» (refunded).
  • Проверьте, что покупателю пришло уведомление по email о возврате.

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

  • Статус не отображается в списках заказов
    Решение: проверьте, что register_post_status вызывается на init и что фильтр wc_order_statuses правильно добавляет статус с префиксом wc-.
  • Кнопка подтверждения не появляется в админке
    Убедитесь, что используете правильный хук woocommerce_order_actions и что пользователь имеет права на редактирование заказа.
  • Письмо покупателю не отправляется
    Проверьте, что email уведомления включены в WooCommerce > Настройки > Email и что код триггера вызывается после смены статуса.

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

  • Для безопасности проверяйте права пользователя перед изменением статуса заказа в обработчике кнопки.
    if (!current_user_can('edit_shop_orders')) {
      wp_die('Недостаточно прав для подтверждения возврата.');
    }
  • Для производительности избегайте частых вызовов update_status без необходимости, чтобы не создавать много хуков и писем.
  • Если возвраты частые, подумайте о создании отдельного плагина с функционалом возвратов, чтобы легче поддерживать и обновлять код.

Сравнение способов реализации подтверждения возврата

МетодПлюсыМинусыКомпромисс
Кастомный статус + кнопка в админкеГибкость, полный контроль, не требует сторонних плагиновТребует базовых навыков PHP, нужно поддерживать кодОптимален для небольших магазинов и разработчиков
Плагины возвратов (например, WooCommerce RMA)Готовый функционал, поддержка, интерфейс для клиентовПлатные, могут перегрузить сайтПодходит для больших магазинов с высокой нагрузкой
Обработка возвратов вручную через email/комментарииМинимальные затратыМного ручной работы, ошибки, отсутствие контроляИспользовать только для тестирования или очень маленьких магазинов

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

⭐⭐⭐⭐⭐
Как создать динамический блок с Ajax в WordPress: практическое руководство
13.09.2026
Как удалить и заблокировать комментарии в WordPress без плагинов
28.08.2026
Как добавить свой shortcode в WordPress — подробное руководство
31.08.2026
Как найти и удалить дубли страниц в WordPress без потери индексации
21.08.2026
WooCommerce: Автоматическое удаление товаров при нулевом остатке
22.08.2026
×
-15%
на премиум-тему
Bono

Создай магазин мечты
на WordPress!

↓ ↓ ↓ ↓ ↓
Купить со скидкой »