woocommerce_payment_complete 未在标记订单完成时触发
woocommerce_payment_complete not firing on marking order completed
我需要在订单完成时执行操作。
我试过这个:
function mysite_woocommerce_payment_complete( $order_id ) {
error_log("callback fired");
}
add_action( 'woocommerce_payment_complete', 'mysite_woocommerce_payment_complete' );
但是当我在管理订单屏幕中使用复选标记将订单标记为已完成时,
...钩子没有发射。
我也试过 woocommerce_order_status_changed
,它在我下订单时执行操作,但在我标记订单已完成时不执行任何操作。
但是当我将订单标记为已完成时,我收到了关于完成订单的电子邮件。
谢谢!
编辑:
我也试过woocommerce_order_status_changed
,这样:
function mysite_woocommerce_payment_complete($order_id, $old_status, $new_status ) {
error_log("$old_status / $new_status \n");
}
add_action( 'woocommerce_order_status_changed', 'mysite_woocommerce_payment_complete', 99, 3 );
但它在购买时触发(我选择了银行转账)并显示:"pending / on-hold",但 不正确 - 请参阅 edi2 不会在手动后端更改时触发"on hold" 到 "completed"。既不通过复选标记也不在单一订单界面。
编辑2
woocommerce_order_status_changed
和 woocommerce_order_status_completed
有效,它只将我的测试 "error" 输出到 debug.log,而不是 error_log 出于某种原因。
我之前使用的 woocommerce_payment_complete
不适用于银行转帐等方法,因此不起作用。感谢@helgatheviking 的快速正确回答
那么完成的订单电子邮件是由以下内容触发的:
// Triggers for this email
add_action( 'woocommerce_order_status_completed_notification', array( $this, 'trigger' ) );
在源代码中 here。
所有 "transactional email actions"(即:触发发送电子邮件的操作)除了正常挂钩外还得到一个 _notification
挂钩,参见 here。
因此woocommerce_order_status_completed_notification
是在woocommerce_order_status_completed
钩子上触发的额外钩子如果woocommerce_order_status_completed
在woocommerce_email_actions
数组中,默认情况下。为了避免对电子邮件感到惊讶,我建议使用 woocommerce_order_status_completed
挂钩,只要订单状态发生变化,它就会被触发,包括在管理员内部,请参阅此示例:
function mysite_woocommerce_payment_complete( $order_id ) {
error_log("callback fired");
}
add_action( 'woocommerce_order_status_completed', 'mysite_woocommerce_payment_complete' );
我需要在订单完成时执行操作。
我试过这个:
function mysite_woocommerce_payment_complete( $order_id ) {
error_log("callback fired");
}
add_action( 'woocommerce_payment_complete', 'mysite_woocommerce_payment_complete' );
但是当我在管理订单屏幕中使用复选标记将订单标记为已完成时,
...钩子没有发射。
我也试过 woocommerce_order_status_changed
,它在我下订单时执行操作,但在我标记订单已完成时不执行任何操作。
但是当我将订单标记为已完成时,我收到了关于完成订单的电子邮件。
谢谢!
编辑:
我也试过woocommerce_order_status_changed
,这样:
function mysite_woocommerce_payment_complete($order_id, $old_status, $new_status ) {
error_log("$old_status / $new_status \n");
}
add_action( 'woocommerce_order_status_changed', 'mysite_woocommerce_payment_complete', 99, 3 );
但它在购买时触发(我选择了银行转账)并显示:"pending / on-hold",但 不正确 - 请参阅 edi2 不会在手动后端更改时触发"on hold" 到 "completed"。既不通过复选标记也不在单一订单界面。
编辑2
woocommerce_order_status_changed
和 woocommerce_order_status_completed
有效,它只将我的测试 "error" 输出到 debug.log,而不是 error_log 出于某种原因。
我之前使用的 woocommerce_payment_complete
不适用于银行转帐等方法,因此不起作用。感谢@helgatheviking 的快速正确回答
那么完成的订单电子邮件是由以下内容触发的:
// Triggers for this email
add_action( 'woocommerce_order_status_completed_notification', array( $this, 'trigger' ) );
在源代码中 here。
所有 "transactional email actions"(即:触发发送电子邮件的操作)除了正常挂钩外还得到一个 _notification
挂钩,参见 here。
因此woocommerce_order_status_completed_notification
是在woocommerce_order_status_completed
钩子上触发的额外钩子如果woocommerce_order_status_completed
在woocommerce_email_actions
数组中,默认情况下。为了避免对电子邮件感到惊讶,我建议使用 woocommerce_order_status_completed
挂钩,只要订单状态发生变化,它就会被触发,包括在管理员内部,请参阅此示例:
function mysite_woocommerce_payment_complete( $order_id ) {
error_log("callback fired");
}
add_action( 'woocommerce_order_status_completed', 'mysite_woocommerce_payment_complete' );