gpt4 book ai didi

php - woocommerce_payment_complete 未在标记订单完成时触发

转载 作者:行者123 更新时间:2023-12-05 01:45:32 30 4
gpt4 key购买 nike

我需要在订单完成时执行操作。

我已经试过了:

function mysite_woocommerce_payment_complete( $order_id ) {
error_log("callback fired");
}
add_action( 'woocommerce_payment_complete', 'mysite_woocommerce_payment_complete' );

但是当我在管理订单屏幕中使用复选标记将订单标记为已完成时, mark order complete

...钩子(Hook)没有开火。我也尝试了 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 );

但它在购买时触发(我选择了银行转账)并显示:“待定/暂停”,但不正确 - 参见 edi2 不会在手动后端更改从“暂停”时触发”到“完成”。既不通过复选标记也不在单一订单界面。

编辑2woocommerce_order_status_changedwoocommerce_order_status_completed 有效,它只将我的测试“错误”输出到 debug.log,而不是出于某种原因到 error_log。我之前使用的 woocommerce_payment_complete 不适用于银行转账等方法,这就是它不起作用的原因。感谢@helgatheviking 快速而正确的回答

最佳答案

那么完成的订单电子邮件是由以下内容触发的:

// Triggers for this email
add_action( 'woocommerce_order_status_completed_notification', array( $this, 'trigger' ) );

如图所示here在源代码中。

所有“事务性电子邮件操作”(即:触发发送电子邮件的操作)除了正常 Hook 外还有一个 _notification Hook ,参见 here .

因此 woocommerce_order_status_completed_notification 是在 woocommerce_order_status_completed 钩子(Hook)上触发的附加钩子(Hook) if woocommerce_order_status_completed woocommerce_email_actions 数组,默​​认情况下。为了避免对电子邮件感到惊讶,我建议使用 woocommerce_order_status_completed任何时候订单状态发生变化时都会触发的 Hook ,包括来自管理员的变化,请参见以下示例:

function mysite_woocommerce_payment_complete( $order_id ) {
error_log("callback fired");
}
add_action( 'woocommerce_order_status_completed', 'mysite_woocommerce_payment_complete' );

关于php - woocommerce_payment_complete 未在标记订单完成时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41535622/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com