О web-разработке
и даже немного больше...

Woocommerce: hook-и при смене статусов заказа

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

В данной заметке мы рассмотрим пример использования хуков (hook), которые широко используются в wordpress. Для тех, кто не знает: хуки — это вызов некоторых ключевых функций, которые помещаются в различных участках кода, и в случае необходимости, чтобы не править непосредственно код плагина, либо каких-то других системных файлов, пользователи могут дописывать свой функционал в отдельном файле. Давайте уже приступим к примеру.

Первым делом, приведем стандартный список статусов для заказов в WooCommerce.

  • Pending payment — В ожидании оплаты
  • Processing — Обработка
  • On-Hold — На удержании
  • Completed — Выполнен
  • Cancelled — Отменен
  • Refunded — Возвращен
  • Failed — Не удался

Как и подавляющее большинство интернет-магазинов, статусы заказов меняются в зависимости от оплаты и формирования заказа на сайте. Иногда возникает необходимость выполнить какие-либо дополнительные операции по заказу, к примеру, отправить какое-либо письмо на почтовый адрес, либо что-либо ещё. Удобно для этого использовать специальные хуки, которые вызываются при смене статуса заказа. Кто знаком с wordpress, наверное, уже понимает, как работают хуки, и как их использовать. Как правило для этого используется файл, находящийся в папке шаблона, и называется он function.php.

Найти файл function.php вы можете по пути:

/wp-content/themes/имя-шаблона/function.php

 

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

Событие при смене статуса заказа на «выполнен»

add_action('woocommerce_order_status_completed', 'competedStatusOrder');
function competedStatusOrder( $order_id ) {
....
}

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

 

По этой аналогии, для каждого статуса можно сделать отдельные обработчики.
woocommerce_order_status_pending
woocommerce_order_status_failed
woocommerce_order_status_on-hold
woocommerce_order_status_processing
woocommerce_order_status_completed
woocommerce_order_status_refunded
woocommerce_order_status_cancelled

 

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

На этом всё, всего наилучшего!

Опубликован: 23.04.2019 г.

См. также:

Убираем URL из формы комментариев WordPress
Работа с базой данных в WordPress
SQL-запросы для смены домена в WordPress
Мультиязычность с помощью плагина Polylang
Как создать свои шорткоды в WordPress
Как добавить виджет на сайт WordPress?
Добавление записей в WordPress средствами PHP
Как отключить архивы по авторам в WP?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта