Fan*_*nky 2 php wordpress orders woocommerce hook-woocommerce
我需要在订单完成时执行操作。
我试过这个:
function mysite_woocommerce_payment_complete( $order_id ) {
error_log("callback fired");
}
add_action( 'woocommerce_payment_complete', 'mysite_woocommerce_payment_complete' );
Run Code Online (Sandbox Code Playgroud)
……钩子没有开火。我也试过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 );
Run Code Online (Sandbox Code Playgroud)
但它在购买时触发(我选择了银行转帐)并显示:“待处理/暂停”,但不是真的 - 请参阅 edi2不会触发从“暂停”到“已完成”的手动后端更改。既不是通过复选标记也不是在单订单界面。
Edit2
woocommerce_order_status_changed并woocommerce_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' ) );
Run Code Online (Sandbox Code Playgroud)
如看到这里的来源。
所有“事务性电子邮件操作”(即:触发电子邮件发送的操作)_notification除了普通钩子外还有一个钩子,见这里。
因此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' );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10131 次 |
| 最近记录: |