Как автоматически изменить статус заказа в WooCommerce
Опубликовано: 2021-07-31Хотите обновить статус заказа в вашем магазине? Вы пришли в нужное место. В этом руководстве мы покажем вам, как автоматически изменить статус заказа в WooCommerce с помощью некоторых PHP-скриптов. Не волнуйтесь, если у вас нет продвинутых навыков кодирования, мы подробно объясним каждый скрипт.
WooCommerce предлагает множество функций для разработчиков, поэтому, если у вас есть навыки кодирования, вы можете выполнять всевозможные настройки и улучшать свой магазин электронной коммерции. В следующем руководстве вы узнаете все, что вам нужно знать о статусе заказа. Это функция WooCommerce, которая может быть очень полезна при управлении большим количеством заказов. Это будет особенно полезно в бэкэнд-списке заказов, где менеджеры магазинов могут легко искать и выполнять определенные действия с заказами с определенным статусом.
Без дальнейших церемоний, давайте сразу приступим к делу.
Каков статус заказа в WooCommerce?
Статус заказа — это просто тег, который имеет заказ и который представляет текущее состояние заказа . Это похоже на таксономию, прикрепленную к сообщению, которая описывает конкретную информацию о текущем состоянии этого сообщения. Например, когда покупатель нажимает кнопку «Оформить заказ», он размещает заказ в нашем магазине. По умолчанию статус заказа установлен на «Ожидание оплаты».
Если магазин интегрирован с платежным шлюзом, таким как PayPal или Stripe, предыдущий статус по умолчанию (в ожидании) будет подтвержден и изменится на « Приостановлено » или « Ошибка » в зависимости от результата проверки платежного шлюза. Затем, если платеж был завершен, статус заказа автоматически изменится на «В обработке », а если платеж не прошел, его статус будет « Не выполнен».
Как видите, каждый из этих статусов дает нам актуальную информацию о заказе. Эта автоматизация позволяет нам узнать, была ли произведена оплата заказа или нет доставки нашего продукта клиенту.
Статус заказа в WooCommerce
Это все статусы заказов, доступные в WooCommerce, и значение каждого из них:
- Ожидание оплаты: Заказ получен, оплата не зарегистрирована. Мы ждем оплаты
- Failed: Платеж не прошел по какой-то причине. Это означает, что он был отклонен платежной платформой (например, PayPal) или требует дополнительной аутентификации (SCA).
- Обработка: оплата получена магазином, товар на складе обновлен, и покупка находится в графике доставки.
- Выполнено: Заказ выполнен и завершен. Это последнее состояние порядка, когда все прошло хорошо
- В ожидании : покупатель не произвел оплату, поэтому заказ требует подтверждения от менеджера магазина.
- Отменено : Либо администратор магазина, либо пользователь в какой-то момент отменили заказ. Это не требует дальнейших действий, хотя рекомендуется связаться с клиентом, чтобы понять, почему он отменил заказ.
- Refunded: Заказ был возвращен, никаких дополнительных действий не требуется.
Теперь, когда мы лучше понимаем, что такое статус заказа и его функции, давайте посмотрим, почему обновление может быть хорошей идеей.
Зачем менять функцию статуса заказа по умолчанию?
Каждый магазин электронной коммерции отличается и имеет определенные требования. Некоторые интернет-магазины могут вообще не использовать статусы заказов или использовать их не все. Например, если покупатели не могут вернуть товары, магазин может не использовать статус возврата .
Кроме того, в некоторых случаях функции статуса заказа по умолчанию недостаточно, и магазину требуется настраиваемый статус или автоматизированное решение для управления статусом заказов. В этих случаях настройка поведения статуса заказа является отличным решением для улучшения управления магазином. Таким образом, магазину электронной коммерции не нужно будет вручную обновлять статус заказа в каждом отдельном случае.
Это поможет владельцам магазинов сэкономить время и позволит им сосредоточиться на более важных вещах для улучшения своего бизнеса.
Как меняется статус заказа в WooCommerce
На этом этапе важно понимать, что статус заказа меняется динамически, когда WooCommerce интегрируется с платежным шлюзом, таким как PayPal, Payoneer, Stripe и т. д. Имейте в виду, что если вы обновите статус вручную, когда это не ожидается, вы можете нарушить способ оплаты, представленный в вашем магазине, и покупатели не смогут следить за процессом покупки.
Чтобы лучше понять, что мы собираемся делать, давайте посмотрим, как работает поток статуса заказа:
Из документации WooCommerce
Как вы можете видеть на графике выше, первый этап статуса заказа — « Ожидание ». Сразу после этого платежный шлюз проверяет, может ли пользователь завершить платеж, и меняет его статус на « На удержании », а затем на « Обработка », когда платеж успешно завершен. В противном случае он превратится в « Failed ».
После этого WooCommerce больше ничего делать не будет. Менеджер магазина должен пометить заказ как « Выполненный » или « Отмененный ». На этом этапе можно безопасно изменить статус заказа автоматически (программно), даже если есть встроенный платежный шлюз.
Кроме того, важно знать, что при изменении статуса на «В обработке » или « Возвращено », запас товаров, участвующих в заказе, будет пересчитан. То же самое произойдет со всей статистикой интернет-магазина, относящейся к этому заказу.
Теперь, когда у нас есть четкое представление о том, как меняется статус заказа, давайте посмотрим, как обновить статус заказа в WooCommerce .
Как автоматически изменить статус заказа в WooCommerce
Давайте взглянем на несколько примеров скриптов для программного изменения статуса заказа в WooCommerce .
ПРИМЕЧАНИЕ . Мы отредактируем некоторые основные файлы, поэтому, прежде чем начать, убедитесь, что вы сделали полную резервную копию своего сайта. Кроме того, создайте дочернюю тему или используйте любой из этих плагинов, если у вас его еще нет, чтобы сохранить свои настройки даже после обновления темы.
Изменить все статусы заказов после покупки
Если ваш магазин электронной коммерции не интегрирован ни с одним платежным шлюзом, который использует статус заказа, вы можете приостановить все заказы сразу после того, как клиент разместит заказ, вместо того, чтобы оставлять его в состоянии «В обработке». Давайте посмотрим на этот скрипт:
функция QuadLayers_change_order_status( $order_id ) { если (! $order_id) {возврат;} $order = wc_get_order($order_id); если('обработка'== $order->get_status()) { $order->update_status('wc-on-hold'); } } add_action('woocommerce_thankyou','QuadLayers_change_order_status');
Мы используем хук woocommerce_thankyou
для запуска нашей функции сразу после размещения заказа и изменения статуса с помощью update_status()
.
Как видите, слаг состояния имеет префикс (WC). Несмотря на то, что эта функция работает и без префикса, рекомендуется использовать ее.
Стоит отметить, что вы можете использовать любой другой статус и даже настраиваемый вместо «В ожидании», изменив код.
Изменить статус заказа из идентификатора заказа
Следующий скрипт изменит статус одного заказа. Например, чтобы изменить статус заказа 115, мы используем следующий фрагмент:
add_action('инициализация',функция(){ $order = новый WC_Order(115); $order->update_status('wc-обработка'); });
Это короткий скрипт, поэтому мы использовали анонимную функцию в хуке 'init'
WordPress.
Обратите внимание, что это не позволит вам вносить дальнейшие изменения в статус, пока скрипт включен.
Обновить статус заказа WooCommerce для постоянных клиентов
Это еще один интересный пример автоматического изменения статуса заказа в WooCommerce. Приведенный ниже сценарий изменит статус заказа на «Завершен» только в том случае, если у пользователя есть предыдущий заказ со статусом «Завершен» или «В обработке».
функция QuadLayers_order_status_returning($order_id) { // Получить заказы этого клиента $user_id = wp_get_current_user(); $customer_orders = []; foreach (wc_get_is_paid_statuses() как $paid_status) { $customer_orders += wc_get_orders([ 'тип' => 'магазин_заказ', 'лимит' => - 1, 'customer_id' => $user_id->ID, 'статус' => $paid_status, ]); } # существует предыдущий заказ если(количество($customer_orders)>0){ если (! $order_id) {возврат;} $order = wc_get_order($order_id); если('обработка'== $order->get_status()) { $order->update_status('wc-completed'); } } } add_action('woocommerce_thankyou', 'QuadLayers_order_status_returning');
Это может быть хорошей идеей для добавления уровня безопасности и улучшения покупательского опыта постоянных клиентов.
Изменить статус заказа в параметре URL
Этот образец скрипта изменит статус заказа на определенный, когда в браузере присутствует параметр URL. Поскольку мы используем хук init
WordPress, скрипт будет работать на любой странице магазина.
Кроме того, он будет редактировать статус заказа для последнего заказа текущего пользователя, вошедшего в систему. В этом примере статус заказа изменится на «Отменен», если любой URL-адрес имеет параметр «возврат», например: https://website.com/shop?st=revert
.
add_action('инициализация',функция(){ if(isset($_GET['st'])&&!пусто($_GET['st']) ): $get_url = $_GET['st']; если($get_url=='возврат'): $user_id = wp_get_current_user(); $order = wc_get_customer_last_order($user_id->ID); $order->update_status('wc-cancelled'); конец; конец; });
Создать индивидуальный статус заказа
Вместо изменения статуса заказа в этом примере мы создадим новый настраиваемый статус заказа, который мы можем использовать свободно. Это хорошая идея, если существующих статусов недостаточно или вы предпочитаете создать новый для большей ясности. Создав собственный статус заказа, вы можете использовать его с любым из вышеперечисленных скриптов.
Следующий скрипт зарегистрирует и добавит новый статус в список статусов заказов. В этом случае мы назовем новый индивидуальный статус заказа «В процессе », но вы можете использовать любое имя, просто настроив код.
// Регистрируем новый статус функция register_in_progress_order_status() { register_post_status('Выполняется туалет', массив( 'метка' => 'В процессе', 'общедоступный' => правда, 'show_in_admin_status_list' => правда, 'show_in_admin_all_list' => правда, 'exclude_from_search' => ложь, 'label_count' => _n_noop( 'Выполняется (%s) ', 'Выполняется (%s) ' ) )); } // Добавляем пользовательский статус в список статусов заказов функция add_in_progress_to_order_statuses($order_statuses) { $new_order_statuses = массив(); foreach ($order_statuses as $key => $status) { $new_order_statuses[$key] = $status; если ( 'wc-обработка' === $key ) { $new_order_statuses['wc-in-progress'] = 'Выполняется'; } } вернуть $new_order_statuses; } add_action('init', 'register_in_progress_order_status'); add_filter('wc_order_statuses', 'add_in_progress_to_order_statuses');
Другие способы изменить статус заказа WooCommerce
Если вы ищете альтернативные способы обновления статуса заказа по умолчанию в WooCommerce, вы можете проверить некоторые плагины. К сожалению, для этого не так много бесплатных инструментов, но вот некоторые из лучших:
- YITH Custom Order Status : отличный инструмент для управления статусами заказов и создания пользовательских. Это один из лучших инструментов на рынке, но он не дешевый. Это обойдется вам в 79,99 евро в год.
- WooCommerce Order Status Manager : еще один отличный плагин для добавления, удаления и редактирования статуса заказа. Вы также можете запускать электронные письма в зависимости от статуса заказов. Это стоит 49 долларов США в год.
- Пользовательский статус заказа для WooCommerce : один из лучших инструментов для управления статусом заказа в WooCommerce. Это премиальный плагин, стоимость которого начинается от 39 долларов США в год.
- Статус пользовательского заказа Ni WooCommerce : один из немногих надежных бесплатных плагинов, который позволяет вам легко управлять статусом вашего заказа.
Как увидеть статус заказа в вашем магазине WooCommerce
Самый простой способ увидеть статус заказа в вашем магазине — открыть панель управления WooCommerce и перейти в раздел « Заказы». Затем откройте любой заказ и в разделе « Общие » нажмите раскрывающийся список «Статус». Там вы увидите все заказы в вашем магазине.
Вывод
Таким образом, статус заказа — это тег, который представляет текущее состояние заказа. Несмотря на то, что WooCommerce включает определенные статусы по умолчанию, их настройка может быть хорошей идеей для тех, кто хочет удалить или добавить новые. Это также может быть интересным решением для предприятий, которым требуется автоматизированное решение для управления статусом своих заказов.
В этом руководстве мы рассмотрели все статусы заказов по умолчанию и различные примеры автоматического изменения статуса заказа в WooCommerce. Это лишь некоторые идеи, но вы можете сделать гораздо больше. Мы рекомендуем вам взять эти скрипты за основу и поэкспериментировать, чтобы настроить их для вашего магазина.
Для получения дополнительной информации о том, как настроить свой магазин, ознакомьтесь с этими руководствами:
- Как автоматически применять купоны WooCommerce
- Редактировать страницу благодарности WooCommerce программно
- Как настроить регистрационную форму WooCommerce
- 3 метода тестирования заказов WooCommerce
- Как добавить фильтры продуктов WooCommerce AJAX
Вы обновили статус заказа в вашем магазине? Были ли у вас какие-либо проблемы после этого руководства? Дайте нам знать в комментариях ниже!