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

啤酒的救星

我正在使用基于“送货方式”代码的“更改Woocommerce订单状态”,它可以很好地用于根据运送方法字符串在WooCommerce中重新分配我的自定义订单状态“ awaiting-pickup ”。

这是我的代码:

add_action( 'woocommerce_thankyou', 'shipping_method_update_order_status', 10, 1 );
    function shipping_method_update_order_status( $order_id ) {
        if ( ! $order_id ) return;
    
        $search = 'local_pickup'; // 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 "pickup" method is used, we change the order to "awaiting-pickup" status
            if( strpos( $shipping_item->get_method_title(), $search ) !== false ){
                $order->update_status('awaiting-pickup');
                $order->save();
                break;
            }
        }
    }

我需要扩展此帮助,以基于其他送货方式(如“ free_shipping”和“ flat_rate”)应用一些不同的规则,我也希望将其重新分配为“等待送货”。

$search = 'flat_rate' OR 'free_shipping';
$order->update_status('awaiting-delivery');

运输实例的结构如下:

'local_pickup:2'
'local_pickup:5'
'local_pickup:7'
'local_pickup:10'

'flat_rate:3'
'flat_rate:6'
'flat_rate:9'

'free_shipping:11'
'free_shipping:12'
'free_shipping:13'

每次我创建一个新的运输区域时,附加到该区域的其他运输实例都会在方法类型上附加新的数字。最终,我需要使用以下逻辑的东西:

IF      'local_pickup' IN string
THEN    $order->update_status('awaiting-pickup');
ELSEIF  'flat_rate' OR 'free_shipping' IN string
THEN    $order->update_status('awaiting-delivery');
END
LoicTheAztec

更新2

由于您在此处使用的是实际的送货方式ID,因此无需搜索字符串。然后,使其更适用于以下多种运输方式ID:

add_action( 'woocommerce_thankyou', 'shipping_method_update_order_status', 10, 1 );
function shipping_method_update_order_status( $order_id ) {
    if ( ! $order_id ) return;
    
    // Here define your shipping methods Ids
    $shipping_methods_ids_1 = array('local_pickup');
    $shipping_methods_ids_2 = array('flat_rate', 'free_shipping');

    // 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 ){
        // For testing to check the shipping method slug (uncomment the line below):
        // echo '<pre>'. print_r( $shipping_item->get_method_id(), true ) . '</pre>';

        // When "Local pickup" method is used, we change the order to "awaiting-pickup" status
        if( in_array( $shipping_item->get_method_id(), $shipping_methods_ids_1 ) && ! $order->has_status('awaiting-pickup') ){
            $order->update_status('awaiting-pickup'); // Already use internally save() method
            break; // stop the loop
        }
        // When 'Flat rate' or 'Free shipping' methods are used, we change the order to "awaiting-delivery" status
        elseif( in_array( $shipping_item->get_method_id(), $shipping_methods_ids_2 ) && ! $order->has_status('awaiting-delivery') ){
            $order->update_status('awaiting-delivery'); // Already use internally save() method
            break; // stop the loop
        }
    }
}

代码进入活动子主题(或活动主题)的functions.php文件中。它应该工作。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

结帐后更改WooCommerce订单上的特定送货方式标题

来自分类Dev

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

来自分类Dev

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

来自分类Dev

仅在结帐页面上更改WooCommerce送货方式标签

来自分类Dev

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

来自分类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

Magento销售/订单/表格根据状态更改颜色

来自分类Dev

希伯来语的Woocommerce问题-送货方式

来自分类Dev

WooCommerce - 我们如何将订单电子邮件中的送货地址更改为 N/A?

来自分类Dev

根据WooCommerce中的订单总数更改PayPal地址

来自分类Dev

根据不同对象的状态更改contextMenuStrip

来自分类Dev

WooCommerce获取订单送货地址作为单独的字段

来自分类Dev

Woocommerce 订单数据未显示,例如送货地址

来自分类Dev

隐藏基于WooCommerce中所选送货方式的付款方式

来自分类Dev

是否可以在shopify上更改订单的送货地址

来自分类Dev

重命名WooCommerce订单状态

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

    结帐后更改WooCommerce订单上的特定送货方式标题

  4. 4

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

  5. 5

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

  6. 6

    仅在结帐页面上更改WooCommerce送货方式标签

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

    WooCommerce更改订单状态BACS处理

  12. 12

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

  13. 13

    在Woocommerce的管理员编辑订单页面上显示每个特定订单的所有可用送货方式

  14. 14

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

  15. 15

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

  16. 16

    在Woocommerce中为每个订单状态计算不同的订单状态计数和总现金

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

    Magento销售/订单/表格根据状态更改颜色

  21. 21

    希伯来语的Woocommerce问题-送货方式

  22. 22

    WooCommerce - 我们如何将订单电子邮件中的送货地址更改为 N/A?

  23. 23

    根据WooCommerce中的订单总数更改PayPal地址

  24. 24

    根据不同对象的状态更改contextMenuStrip

  25. 25

    WooCommerce获取订单送货地址作为单独的字段

  26. 26

    Woocommerce 订单数据未显示,例如送货地址

  27. 27

    隐藏基于WooCommerce中所选送货方式的付款方式

  28. 28

    是否可以在shopify上更改订单的送货地址

  29. 29

    重命名WooCommerce订单状态

热门标签

归档