Woocommerce-woocommerce_order_status_pending挂钩未调用

时间:2019-06-27 13:05:55

标签: php wordpress woocommerce hook-woocommerce


我在检查woocommerce订单的订单状态时遇到麻烦。

我有一个正在创建的插件,当订单变为“待处理”然后“完成”时,我需要知道。但是,只有当我在wordpress admin中手动设置订单状态时,所有挂钩才起作用。

function order_status_changed_clbk( $order_id ){
    ...some code...
}
add_action( 'woocommerce_order_status_pending', 'order_status_changed_clbk' );

1 个答案:

答案 0 :(得分:0)

更新

我发现有一个小问题。如果用户取消付款(例如在PayPal付款),则可能会将他再次重定向到结帐处。现在,让我们期待他再次重复结帐。在这种情况下,钩子调用又被称为第二次了。因此,我为自己实现了payment_counter

add_action('woocommerce_checkout_order_processed','order_status_changed_clbk'); 函数order_status_changed_clbk($ order_id){     $ payment_counter =(int)get_post_meta($ order_id,'payment_counter',true);

if ( empty( $payment_counter ) ) {
    update_post_meta( $order_id, 'payment_counter', 1 );
    error_log( 'Function works!' ); //Get's called only once
} else {
    update_post_meta( $order_id, 'payment_counter', ++ $payment_counter ); //Cool thing for statistics maybe, but not really needed
}

}


也许这个钩子对你有用:

function order_status_changed_clbk( $order_id ){
    error_log( 'Function works!' );
}
add_action( 'woocommerce_checkout_order_processed', 'order_status_changed_clbk' );

我正在插件中使用它。如果订单已处理,那么它也处于“待处理”状态,因此这可能就是您要寻找的解决方案。

尝试一下,检查debug.log中的Function works!