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

标签 php wordpress woocommerce orders hook-woocommerce

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

我已经试过了:

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 不会在手动后端更改从“暂停”时触发”到“完成”。既不通过复选标记也不在单一订单界面。

编辑2 woocommerce_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/

相关文章:

php - 使用 AJAX 生成 Dwolla 访问 token 而不是重定向到他们的网页?

php - MySql 查询结果中的内部数组到 PHP

php - 如何根据传入的哈希标签发送 PHP 请求?

php - 使用 WordPress 简码添加 <meta> 标签

php - "woocommerce_thankyou"操作 Hook 是否会在失败的订单上触发?

php - 从字符串 php 中删除文本

php - 为什么 php datetime 对象与比较运算符进行比较

php - wordpress 无法连接到数据库

php - 关于国家/地区更改 Ajax 更新 Woocommerce 中运输的结账

php - WooCommerce 使用 Ajax 将多个商品添加到购物车