订单后的 WooCommerce 钩子未触发

WooCommerce hooks after order are not triggering

提问人:Dog 提问时间:11/15/2023 最后编辑:Dog 更新时间:11/16/2023 访问量:40

问:

我正在尝试在 WooCommerce 中的订单完成后添加自定义 API 调用。

我遇到了一个问题,似乎没有一个钩子触发。 每当我下订单并付款时,一切都正常工作,但没有触发任何woocommerce“订单”钩子。

到目前为止,我已经尝试了以下钩子:

  • woocommerce_payment_complete
  • woocommerce_thankyou
  • woocommerce_order_status_completed
  • woocommerce_order_status_changed
  • woocommerce_new_order
  • woocommerce_payment_complete_order_status_completed

我为每个尝试了一个简单的功能,发送电子邮件,并记录到debug.log。 当我下订单并付款时,这些钩子都不会被触发。

我正在将 Oxygen Builder 用于我的 WordPress 网站。

以下是使用其中一个钩子的一些代码示例:

    add_action( 'woocommerce_payment_complete','callback_function_2' );

function callback_function_2( $orderid ){
    
    $to_email = '[email protected]';
    $payment = "payment text - woocommerce_payment_complete";
    $headers = 'From: Your Name <[email protected]>' . '\r\n';
    wp_mail($to_email, 'subject 2', $payment, $headers );

  exit;
}

有人遇到过这个问题吗?

我尝试过的一些线程:

php wordpress woocommerce 钩子-woocommerce

评论

1赞 Stender 11/15/2023
你需要展示你的代码,以及你尝试过的内容。
0赞 LoicTheAztec 11/16/2023
您添加的代码并不反映您尝试使用这些 WooCommerce 钩子实现的外部 API 调用,因此没有人能神奇地猜到您真正想做什么......试着澄清你的问题,如果你想有机会得到一个有用的答案......
0赞 Dog 11/16/2023
问题是没有一个钩子被触发......我给出的示例代码应该会触发一封电子邮件,但这只是一个测试,不会被触发......我会试着稍微改写一下......
1赞 LoicTheAztec 11/16/2023
@Dog 所以这似乎与别的东西有关,那些 WooCommerce 钩子正在制造麻烦......它可以是插件或您之前添加的一些自定义代码......我可以确认,在正常稳定的 WooCommerce 配置中,当订单状态发生变化时,订单状态钩子会被有效触发,因此例如,当订单状态更改为已完成时,总是会触发......woocommerce_order_status_completed
0赞 Dog 11/16/2023
@loic是的,不幸的是,看起来有什么东西影响了这些钩子,因为它们“应该”工作......可能是支付网关插件......

答:

-1赞 Parsa Mirzaie 11/16/2023 #1

检查此代码:

add_action('woocommerce_payment_complete', 'callback_function_2', 10, 1);

function callback_function_2($order_id) {
    $order = wc_get_order($order_id);

    $to_email = '[email protected]';
    $payment = "payment text - woocommerce_payment_complete";
    $headers = 'From: Your Name <[email protected]>' . '\r\n';
    
    wp_mail($to_email, 'subject 2', $payment, $headers);
}