我在检查woocommerce订单的订单状态时遇到麻烦。
我有一个正在创建的插件,当订单变为“待处理”然后“完成”时,我需要知道。但是,只有当我在wordpress admin中手动设置订单状态时,所有挂钩才起作用。
function order_status_changed_clbk( $order_id ){
...some code...
}
add_action( 'woocommerce_order_status_pending', 'order_status_changed_clbk' );
答案 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!
。