如何重新启动 woocommerce webhook
How to re-fire a woocommerce webhook
我们有一些 'action' 类型的 webhook 设置,但有时我们想重新发送最初通过 webhook 发送的数据。例如 webhook 启动了一个自动化进程,但是失败了,我们需要重新启动 ti。为此,我向管理元框添加了自定义订单操作,但现在我需要它们来实际(重新)触发 webhook。
function pwk_wc_add_order_meta_box_action( $actions ) {
global $theorder;
// continue if the order completed, processing or refunded
if ( $theorder->has_status('processing') || $theorder->has_status('completed') || $theorder->has_status('refunded') ) {
$actions['wc_resend_order_webhook'] = __( 'Refire this order webhook', 'text-domain' );
return $actions;
} else {
return $actions;
}
}
我的 webhook 是这样设置的:
Name
action.woocommerce_payment_complete
Status
Active
Topic
Action
Action event
woocommerce_payment_complete
我可以对 运行 网络钩子调用什么操作?我不希望只发送 webhook 来触发订单电子邮件。在我的情况下,它是“woocommerce_payment_complete”,但实际上如何为任何操作或主题重新触发 webhook?
编辑 1:所以我使用 Action 事件创建了一个新的 webhook woocommerce_order_action_wc_resend_order_webhook
,然后向函数添加了一些内容:
function pwk_process_resend_order_webhook_meta_box_action( $order ) {
// add the order note
$message = sprintf( __( 'Order resent to integromat.', 'text-domain' ));
$order->add_order_note( $message );
$arg = $order->get_order_number();
return $arg;
}
add_action( 'woocommerce_order_action_wc_resend_order_webhook', 'pwk_process_resend_order_webhook_meta_box_action' );
虽然这确实触发了一个 webhook,但看起来它是一个数组而不是简单的订单 ID:
{
"action": "woocommerce_order_action_wc_resend_order_webhook",
"arg": []
}
一个解决方案是利用 woocommerce_order_action,因为它允许新的操作,然后 运行 一个 do_action
创建一个操作,其唯一目的是触发 webhook。动作名称woocommerce_order_action_fire_webhook_order
组成
即 <woocommerce_order_action_>anything_you_want
也有效
function pwk_process_resend_order_webhook_meta_box_action( $order ) {
$message = sprintf( __( 'Order details resent via webhook.', 'text-domain' ));
$order->add_order_note( $message );
do_action( 'woocommerce_order_action_fire_webhook_order', $order->get_order_number() );
}
add_action( 'woocommerce_order_action_wc_resend_order_webhook', 'pwk_process_resend_order_webhook_meta_box_action' );
然后还为事件 woocommerce_order_action_fire_webhook_order
创建一个 action
类型的 webhook
老实说,我不完全确定为什么会这样,所以欢迎任何评论或修改。
我们有一些 'action' 类型的 webhook 设置,但有时我们想重新发送最初通过 webhook 发送的数据。例如 webhook 启动了一个自动化进程,但是失败了,我们需要重新启动 ti。为此,我向管理元框添加了自定义订单操作,但现在我需要它们来实际(重新)触发 webhook。
function pwk_wc_add_order_meta_box_action( $actions ) {
global $theorder;
// continue if the order completed, processing or refunded
if ( $theorder->has_status('processing') || $theorder->has_status('completed') || $theorder->has_status('refunded') ) {
$actions['wc_resend_order_webhook'] = __( 'Refire this order webhook', 'text-domain' );
return $actions;
} else {
return $actions;
}
}
我的 webhook 是这样设置的:
Name | action.woocommerce_payment_complete |
---|---|
Status | Active |
Topic | Action |
Action event | woocommerce_payment_complete |
我可以对 运行 网络钩子调用什么操作?我不希望只发送 webhook 来触发订单电子邮件。在我的情况下,它是“woocommerce_payment_complete”,但实际上如何为任何操作或主题重新触发 webhook?
编辑 1:所以我使用 Action 事件创建了一个新的 webhook woocommerce_order_action_wc_resend_order_webhook
,然后向函数添加了一些内容:
function pwk_process_resend_order_webhook_meta_box_action( $order ) {
// add the order note
$message = sprintf( __( 'Order resent to integromat.', 'text-domain' ));
$order->add_order_note( $message );
$arg = $order->get_order_number();
return $arg;
}
add_action( 'woocommerce_order_action_wc_resend_order_webhook', 'pwk_process_resend_order_webhook_meta_box_action' );
虽然这确实触发了一个 webhook,但看起来它是一个数组而不是简单的订单 ID:
{
"action": "woocommerce_order_action_wc_resend_order_webhook",
"arg": []
}
一个解决方案是利用 woocommerce_order_action,因为它允许新的操作,然后 运行 一个 do_action
创建一个操作,其唯一目的是触发 webhook。动作名称woocommerce_order_action_fire_webhook_order
组成
即 <woocommerce_order_action_>anything_you_want
也有效
function pwk_process_resend_order_webhook_meta_box_action( $order ) {
$message = sprintf( __( 'Order details resent via webhook.', 'text-domain' ));
$order->add_order_note( $message );
do_action( 'woocommerce_order_action_fire_webhook_order', $order->get_order_number() );
}
add_action( 'woocommerce_order_action_wc_resend_order_webhook', 'pwk_process_resend_order_webhook_meta_box_action' );
然后还为事件 woocommerce_order_action_fire_webhook_order
action
类型的 webhook
老实说,我不完全确定为什么会这样,所以欢迎任何评论或修改。