首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只用于订单处理的Wordpress钩子

只用于订单处理的Wordpress钩子
EN

Stack Overflow用户
提问于 2022-03-10 16:54:41
回答 2查看 162关注 0票数 0

我正在制作一个WordPress插件,每当订单状态从“挂起”更新到“处理”时,我都需要进行API调用。

代码语言:javascript
复制
    function __construct(){
        add_action( 'woocommerce_after_order_object_save', [$this,'action_woocommerce_doba_order_import'], 10, 1 ); 
    }

    public function action_woocommerce_doba_order_import($order){
            
        if ( 'processing' === $order->get_status() ) {
           "API call here" 
        }
            
    }

当订单状态从“未决”更新到“处理”时,此代码工作良好,但当状态从“处理”更改为其他内容时,它会进行两个额外的API调用。因此,对于每个订单,我会得到两个额外的API调用,每个订单的状态从处理更改为其他。我肯定犯了一些错误。也许我使用了错误的钩子,或者需要设置不同的条件。

EN

回答 2

Stack Overflow用户

发布于 2022-04-22 09:51:07

我们已经创建了一个WordPress代码,用于更改订单状态,每次订单状态从“挂起”更新到“处理”时都调用钩子函数。

你试试这个:

代码语言:javascript
复制
  function __construct(){
            add_action( 'woocommerce_after_order_object_save', [$this,'action_woocommerce_doba_order_import'], 10, 1 ); 
        }
    
        public function action_woocommerce_doba_order_import($order_id){
                
        if( ! $order_id ) return;
    
        $order = wc_get_order( $order_id );
    
        if( $order->get_status() == 'pending' ) {
            $order->update_status( 'processing' );                
        }

}
票数 0
EN

Stack Overflow用户

发布于 2022-04-26 11:14:53

我试图在最新版本的WooCommerce插件6.3.1中找到这个动作,但我没有找到,但我发现可能有一个更好的钩子可以使用,其中包括新的状态。

代码语言:javascript
复制
do_action( 'woocommerce_order_edit_status', $this->get_id(), $result['to'] );

所以你可以这样用它:

代码语言:javascript
复制
function __construct(){
            add_action( 'woocommerce_order_edit_status', [$this,'action_woocommerce_doba_order_import'], 10, 2 ); 
        }
    
        public function action_woocommerce_doba_order_import($order_id, $new_status){
                
        if( ! $order_id ) return;

        //ignore other status changes without additional calls
        if( 'pending' !== $new_status ) return;

        $order = wc_get_order( $order_id );

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

https://stackoverflow.com/questions/71427909

复制
相关文章

相似问题

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