WooCommerce. Лучше, чем вебхуки

У WooCommerce есть волшебное средство «вебхуки». Они же «вебзацепы». И там суть в том, что при наступлении какого-либо события срабатывает хук и происходит исполнение какого-то кода.

Этот механизм лучше, чем ничего, но не всегда удобен. Есть вариант лучше.

Главным преимуществом, почему я использовал вебхуки, являлось то, что через post передавались все данные по заказу. Всё в одном. Я написал свою функцию и разместил её шорткодом на отдельной странице (личном кабинете пользователя). Шорткод ничего не выводит, он просто делает проверку заказа.

Итак, модель данных.

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

  1. Нам нужно получить список всех выполненных заказов. Значит, нужно получить из таблицы wp_posts все ID записей, где post_status равен ‘wc-completed‘. Получаем все айдишники.
  2. Теперь находим order_item_id в таблице wp_woocommerce_order_items по order_id, который получили в первом пункты.
  3. Далее в таблице wp_woocommerce_order_itemmeta по order_item_id получаем всю информацию по позиции заказа.

После этого совершаем все нужные действия: выписываем подписку, отправляем письмо на почту пользователя, генерируем купоны для голосования и так далее. Каждый раз, когда пользователь заходит в кабинет, проверяются его заказы на предмет оплаты. Можно поставить проверку по CRON. Можно привязать проверку к wp_head(). Есть масса вариантов, в зависимости от условий потребности.

Вебхуки больше не нужны.

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

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