首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WooCommerce钩子- woocommerce_update_order问题

WooCommerce钩子- woocommerce_update_order问题
EN

Stack Overflow用户
提问于 2019-10-15 11:23:39
回答 2查看 1.3K关注 0票数 1

我注册了以下的woocommerce钩子:

代码语言:javascript
复制
add_action('woocommerce_update_order', 'some_func', 300, 2);
function some_func($order_id, $order){
  // ...
}

不过,我有几个问题:

在更新订单时,这会多次触发,而不是只在最后触发。它用旧秩序发射两次,一次用一次。

我还尝试了以下几种方法:

代码语言:javascript
复制
add_action('woocommerce_update_order', 'some_func', 300, 2);
function some_func($order_id, $order){
    remove_action('woocommerce_update_order', 'some_func');
    // ...
}

这也改变不了它。

此外,我还尝试修改remove_action以包括优先级和参数计数,例如:

代码语言:javascript
复制
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。

对于在更新后如何获得最新版本的订单,我有任何建议,而只需在上启动一次

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-17 09:00:45

代码语言:javascript
复制
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 );
  }
}

你的行动在岗位条件下

票数 2
EN

Stack Overflow用户

发布于 2019-10-16 10:32:45

代码语言:javascript
复制
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’);

这些状态变化很大的钩子在那里。您可以使用您需要的特定的。希望能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58393549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档