nor1m
@nor1m
web-developer

Как взять данные о заказе с помощью хука?

Так я начинаю отправлять данные в crm:
add_action( 'woocommerce_new_order', 'sdgroup_new_order' );
function sdgroup_new_order( $order, $data ){
    send_order_to_amo_crm($order);
}

Внутри этой функции есть такой код:
$order = wc_get_order( $order_id );
Он не работает, выдает ошибку:
wc_get_order should not be called before post types are registered (woocommerce_after_register_post_type action)

Работает если в лоб юзать хук woocommerce_after_register_post_type
Вот так:
add_action( 'woocommerce_after_register_post_type', 'action_function_name_6370' );
function action_function_name_6370(){
    send_order_to_amo_crm(83796);
}

Но я не могу сразу 2 хука использовать. Что тут можно сделать ? Мне самое главное при заказе отправить данные в crm
  • Вопрос задан
  • 228 просмотров
Решения вопроса 1
Мне надо было сделать выгрузку заказов в google sheets
Не помню почему (к сожалению не сделал комментариев по этому поводу), но я отказался от использования хука "woocommerce_new_order" и воспользовался хуком "woocommerce_checkout_order_processed"
он также передает в аргументах "order_id"
В результате все работает ОК

Но есть один момент, который для моих заказчиков является плюсом - Это
Когда клиент делает заказ и пытается оплатить его банковской картой, мой код отрабатывает еще до попытки оплаты, и отравляет данные в таблицу google. Если у клиента оплата прошла, то позже приходят сообщения на почту о новом заказе, но если оплата не прошла (ну например денег не хватило на карте), то на почту ничего не приходит, и менеджер никак не узнает о попытке. В результате отображение созданных заказов в google таблице помогает связаться с клиентом и помочь оформить заказ наложенным платежом, или еще как.

ps. делалось для версии WP 4.6.1 WC 2.6.11
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы