0

根据 woocommerce 文档中的信息: https
://docs.woocommerce.com/document/subscriptions/develop/action-reference/ 动作:woocommerce_subscription_status_changed
也应在订阅升级或降级时触发 - switched
但它仅适用于以下情况:
active, on-hold, cancelled
这是我的示例代码:

add_action('woocommerce_subscription_status_changed', 'test', 10, 3);
function test( $subscription_id, $old_status, $new_status ) {
    global $woocommerce;
    $file_content = $subscription_id.' '.$old_status.' '.$new_status;
    $filename = '/tmp/test_file.txt';
    file_put_contents($filename, $file_content);
}


上面的代码有效,但订阅切换时无效,我的问题是为什么?

4

2 回答 2

0

您应该为此目的使用 woocommerce_subscriptions_switch_completed 操作

于 2018-05-15T14:28:55.393 回答
0

你正在使用的钩子

     add_action('woocommerce_subscription_status_changed', 'test', 10, 3);  <== 2.0 or earlier

已过时,仅适用于 woocommerce 订阅 2.0 或更低版本。2.0+ 及以上版本使用以下钩子。

 add_action( 'woocommerce_subscription_status_updated', 'test', 1, 3); <=== after 2.0

 function test( $subscription_id, $old_status, $new_status ) {
     $file_content = $subscription_id.' '.$old_status.' '.$new_status;
     $filename = '/tmp/test_file.txt';
     file_put_contents($filename, $file_content);
   }

您可以删除全局 $woocommerce,因为它不再需要。

于 2019-06-23T03:44:53.177 回答