根据运输方式更改 Woocommerce 订单状态

黑山24

这里的想法是,当订单以“快递”作为送货方式时,订单状态会更新为待定。

由于我有一些不同的“快递”运输方式费率,我认为通过使用stristr()查看该词是否'express'出现在格式化的运输方式标题中的任何位置。但我似乎错过了一些东西,因为我什么也没得到。

如何检查订单运输方式是否为“快递”以更新订单状态?

这是我拥有的代码:

add_action( 'woocommerce_thankyou', 'express_orders_4865', 10, 1 );
function express_orders_4865( $order_id ) {
    global $woocommerce;

    $order = new WC_Order( $order_id );

    $shipping_method = $order->get_shipping_method();

    if (stristr($shipping_method, 'express') === TRUE) {
        $order->update_status('on-hold');
    } else {
        return;
    }
}

编辑 - - - - - - - - - - - - - - - - - - - - - - - - - ----------

对于使用 Woocommerce Table Rate Shipping 的任何人,get_method_id 返回表速率 ID,所以我使用 get_method_title 代替,如下所示,如果有更好的方法请评论...

add_action( 'woocommerce_thankyou', 'express_shipping_update_order_status', 10, 1 );
function express_shipping_update_order_status( $order_id ) {
    if ( ! $order_id ) return;

    $search = 'Express'; // The needle to search in the shipping method ID

    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );

    // Get the WC_Order_Item_Shipping object data
    foreach($order->get_shipping_methods() as $shipping_item ){
        // When "express delivery" method is used, we change the order to "on-hold" status


        if( strpos( $shipping_item->get_method_title(), $search ) !== false ){
            $order->update_status('on-hold');
            break;
        }
    }
}
LoicTheAztec

我更喜欢使用速度更快、内存占用更少的函数,strpos()因为运输方式 ID 总是小写(就像一种 slug)。

因此最好WC_Order_Item_Shipping使用可用方法获取这种情况下对象数据。

所以代码应该是:

add_action( 'woocommerce_thankyou', 'express_shipping_update_order_status', 10, 1 );
function express_shipping_update_order_status( $order_id ) {
    if ( ! $order_id ) return;
    
    $search = 'express'; // The needle to search in the shipping method ID

    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );

    // Get the WC_Order_Item_Shipping object data
    foreach($order->get_shipping_methods() as $shipping_item ){
        // When "express delivery" method is used, we change the order to "on-hold" status
        if( strpos( $shipping_item->get_method_title(), $search ) !== false && ! $order->has_status('on-hold')){
            $order->update_status('on-hold');
            break;
        }
    }
}

代码位于活动子主题(或主题)的 function.php 文件或任何插件文件中。

经过测试并有效……

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

WooCommerce根据特定的运输方式更改BACS订单的状态

来自分类Dev

根据不同的送货方式更改Woocommerce订单状态

来自分类Dev

以编程方式从现有WooCommerce订单更改运输方式

来自分类Dev

WooCommerce订单状态从付款网关更改

来自分类Dev

WooCommerce更改订单状态BACS处理

来自分类Dev

更改重复项目的WooCommerce订单的状态

来自分类Dev

如何根据状态隐藏 Woocommerce 订单列表中的订单

来自分类Dev

根据批准状态和特定订单项更改WooCommerce订单状态

来自分类Dev

根据WooCommerce编辑订单页面中的订单状态在下拉菜单中隐藏订单状态

来自分类Dev

WooCommerce - 重复订单的不同运输方式

来自分类Dev

通过WooCommerce订单和电子邮件中的文本更改运输方式以使用特定的运输方式

来自分类Dev

如何根据woocommerce订单中使用的优惠券更改订单状态

来自分类Dev

根据 WooCommerce 中的运输方式自定义订单接收页面

来自分类Dev

当订单状态更改为自定义订单状态时,从WooCommerce发送电子邮件

来自分类Dev

当订单状态更改为自定义订单状态时,从WooCommerce发送电子邮件

来自分类Dev

限制用户角色仅更改 Woocommerce 中的某些订单状态

来自分类Dev

以编程方式在WooCommerce特定订单状态更改上添加免费产品

来自分类Dev

我如何访问当前的woocommerce订单运输方式ID?

来自分类Dev

woocommerce 根据数量隐藏运输方式

来自分类Dev

重命名WooCommerce订单状态

来自分类Dev

如何删除WooCommerce订单状态?

来自分类Dev

WooCommerce ajax 获取订单状态

来自分类Dev

在WooCommerce中更改已付款订单状态更改的已付款日期

来自分类Dev

Woocommerce根据订单状态重定向到自定义页面

来自分类Dev

根据woocommerce中的自定义订单状态触发短信发送

来自分类Dev

根据订单状态自定义 Woocommerce 电子邮件通知内容

来自分类Dev

WooCommerce:在订单状态更改时仅运行一次代码

来自分类Dev

WooCommerce中特定产品的自动更改订单状态为已完成

来自分类Dev

在WooCommerce中创建订单时获取订单商品的库存状态

Related 相关文章

  1. 1

    WooCommerce根据特定的运输方式更改BACS订单的状态

  2. 2

    根据不同的送货方式更改Woocommerce订单状态

  3. 3

    以编程方式从现有WooCommerce订单更改运输方式

  4. 4

    WooCommerce订单状态从付款网关更改

  5. 5

    WooCommerce更改订单状态BACS处理

  6. 6

    更改重复项目的WooCommerce订单的状态

  7. 7

    如何根据状态隐藏 Woocommerce 订单列表中的订单

  8. 8

    根据批准状态和特定订单项更改WooCommerce订单状态

  9. 9

    根据WooCommerce编辑订单页面中的订单状态在下拉菜单中隐藏订单状态

  10. 10

    WooCommerce - 重复订单的不同运输方式

  11. 11

    通过WooCommerce订单和电子邮件中的文本更改运输方式以使用特定的运输方式

  12. 12

    如何根据woocommerce订单中使用的优惠券更改订单状态

  13. 13

    根据 WooCommerce 中的运输方式自定义订单接收页面

  14. 14

    当订单状态更改为自定义订单状态时,从WooCommerce发送电子邮件

  15. 15

    当订单状态更改为自定义订单状态时,从WooCommerce发送电子邮件

  16. 16

    限制用户角色仅更改 Woocommerce 中的某些订单状态

  17. 17

    以编程方式在WooCommerce特定订单状态更改上添加免费产品

  18. 18

    我如何访问当前的woocommerce订单运输方式ID?

  19. 19

    woocommerce 根据数量隐藏运输方式

  20. 20

    重命名WooCommerce订单状态

  21. 21

    如何删除WooCommerce订单状态?

  22. 22

    WooCommerce ajax 获取订单状态

  23. 23

    在WooCommerce中更改已付款订单状态更改的已付款日期

  24. 24

    Woocommerce根据订单状态重定向到自定义页面

  25. 25

    根据woocommerce中的自定义订单状态触发短信发送

  26. 26

    根据订单状态自定义 Woocommerce 电子邮件通知内容

  27. 27

    WooCommerce:在订单状态更改时仅运行一次代码

  28. 28

    WooCommerce中特定产品的自动更改订单状态为已完成

  29. 29

    在WooCommerce中创建订单时获取订单商品的库存状态

热门标签

归档