为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取 WooCommerce 运输方式成本和设置?

如何获取 WooCommerce 运输方式成本和设置?

PHP
慕标5832272 2023-06-18 17:15:49
我正在尝试获取所有运输方式及其费率和标题。但是当我使用它时,WC()->shipping->get_shipping_methods()它只会返回空的费率数组和空的标题字符串。这是一个转储:     array (size=3)  'flat_rate' =>     object(WC_Shipping_Flat_Rate)[1861]      protected 'fee_cost' => string '' (length=0)      public 'supports' =>         array (size=3)          0 => string 'shipping-zones' (length=14)          1 => string 'instance-settings' (length=17)          2 => string 'instance-settings-modal' (length=23)      public 'id' => string 'flat_rate' (length=9)      public 'method_title' => string 'Flat rate' (length=9)      public 'method_description' => string 'Lets you charge a fixed rate for shipping.' (length=42)      public 'enabled' => string 'yes' (length=3)      public 'title' => string '' (length=0)      public 'rates' =>         array (size=0)          empty      public 'tax_status' => string '' (length=0)      public 'fee' => null      public 'minimum_fee' => null      public 'instance_id' => int 0      public 'instance_form_fields' =>         array (size=3)          'title' =>             array (size=5)              ...          'tax_status' =>             array (size=5)              ...          'cost' =>             array (size=7)              ...      public 'instance_settings' =>         array (size=0)          empty      public 'availability' => null      public 'countries' =>         array (size=0)          empty      public 'plugin_id' => string 'woocommerce_' (length=12)      public 'errors' =>         array (size=0)          empty      public 'settings' =>         array (size=4)          'title' => string '' (length=0)          'tax_status' => string '' (length=0)          'cost' => string '' (length=0)          'type' => string 'class' (length=5)      public 'form_fields' =>         array (size=0)          empty      protected 'data' =>         array (size=0)          empty      public 'cost' => string '' (length=0)      public 'type' => string 'class' (length=5)我试图用谷歌搜索这个问题,但没有任何帮助。有谁知道可能是什么问题?非常感谢!
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超12个赞

因为WC()->shipping->get_shipping_methods()不加载在每个运输区域设置的运输方式,它只加载您可以在任何运输区域设置的所有可用运输方式,以及所有默认值和可用的设置字段……


请记住,送货方式成本和设置由送货区域设置,并与位置(地区、国家、州或邮政编码)相关。


因此,由于每个运输区域的运输方式费率不同,您需要首先获得在运输部分设置中设置的一个或所有运输区域。


然后,您可以从送货区获取为其设置的所有送货方式费率,例如:


// Get all your existing shipping zones IDS

$zone_ids = array_keys( array('') + WC_Shipping_Zones::get_zones() );


// Loop through shipping Zones IDs

foreach ( $zone_ids as $zone_id ) 

{

    // Get the shipping Zone object

    $shipping_zone = new WC_Shipping_Zone($zone_id);


    // Get all shipping method values for the shipping zone

    $shipping_methods = $shipping_zone->get_shipping_methods( true, 'values' );


    // Loop through each shipping methods set for the current shipping zone

    foreach ( $shipping_methods as $instance_id => $shipping_method ) 

    {

        // The dump of protected data from the current shipping method

        var_dump($shipping_method);

    }

}

这一次,正如您将看到的,您将获得在配送区域中设置的每种配送方式费率的所有设置(自定义标签、成本和其他设置)。


查看完整回答
反对 回复 2023-06-18
  • 1 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信