我注册了以下的woocommerce钩子:
add_action('woocommerce_update_order', 'some_func', 300, 2);
function some_func($order_id, $order){
// ...
}不过,我有几个问题:
在更新订单时,这会多次触发,而不是只在最后触发。它用旧秩序发射两次,一次用一次。
我还尝试了以下几种方法:
add_action('woocommerce_update_order', 'some_func', 300, 2);
function some_func($order_id, $order){
remove_action('woocommerce_update_order', 'some_func');
// ...
}这也改变不了它。
此外,我还尝试修改remove_action以包括优先级和参数计数,例如:
add_action('woocommerce_update_order', 'some_func', 300, 2);
function some_func($order_id, $order){
remove_action('woocommerce_update_order', 'some_func', 300, 2);
// ...
}现在,它只启动了一次,但它给了我旧的订单,而不是新更新的订单。
我使用的是WooCommerce 3.7.0。
对于在更新后如何获得最新版本的订单,我有任何建议,而只需在上启动一次。
谢谢!
发布于 2019-10-17 09:00:45
add_action( 'save_post', 'my_save_post_function', 10, 3 );
function my_save_post_function( $post_ID, $post, $update ) {
if("shop_order" == $post->post_type){
$msg = 'An order updte fireda';
wp_die( $msg );
}
}你的行动在岗位条件下
发布于 2019-10-16 10:32:45
function mysite_pending($order_id) {
error_log("$order_id set to PENDING", 0);
}
function mysite_failed($order_id) {
error_log("$order_id set to FAILED", 0);
}
function mysite_hold($order_id) {
error_log("$order_id set to ON HOLD", 0);
}
function mysite_processing($order_id) {
error_log("$order_id set to PROCESSING", 0);
}
function mysite_completed($order_id) {
error_log("$order_id set to COMPLETED", 0);
}
function mysite_refunded($order_id) {
error_log("$order_id set to REFUNDED", 0);
}
function mysite_cancelled($order_id) {
error_log("$order_id set to CANCELLED", 0);
}
add_action( ‘woocommerce_order_status_pending’, ‘mysite_pending’);
add_action( ‘woocommerce_order_status_failed’, ‘mysite_failed’);
add_action( ‘woocommerce_order_status_on-hold’, ‘mysite_hold’);
// Note that it’s woocommerce_order_status_on-hold, not on_hold.
add_action( ‘woocommerce_order_status_processing’, ‘mysite_processing’);
add_action( ‘woocommerce_order_status_completed’, ‘mysite_completed’);
add_action( ‘woocommerce_order_status_refunded’, ‘mysite_refunded’);
add_action( ‘woocommerce_order_status_cancelled’, ‘mysite_cancelled’);这些状态变化很大的钩子在那里。您可以使用您需要的特定的。希望能帮上忙
https://stackoverflow.com/questions/58393549
复制相似问题