Woocommerce 在前端列出并显示 WooCommerce 运输区域

Posted

技术标签:

【中文标题】Woocommerce 在前端列出并显示 WooCommerce 运输区域【英文标题】:Woocommerce listing and displaying WooCommerce Shipping Zones in the frontend 【发布时间】:2020-09-18 22:40:19 【问题描述】:

我一直在尝试创建一个简单的简码函数,以便可以在我的网站前端显示可用运输区域的列表以及它们的区域名称、国家或州、方法标题和运输成本每个运输区域。

我可以通过在 WooCommerce get_zones() 函数的帮助下创建一个简单的循环来检索所有运输区域的名称,但它只返回对象数组。

功能:

function shipping_zones_shortcode() 

    $delivery_zones = WC_Shipping_Zones::get_zones();

    foreach ( (array) $delivery_zones as $key => $the_zone ) 
      echo ''.$the_zone['zone_name'].', ';

      print_r($delivery_zones);

    


add_shortcode( 'list_shipping_zones', 'shipping_zones_shortcode', 10 );

我们将不胜感激。

【问题讨论】:

【参考方案1】:

以下内容将帮助您走上正轨。您只需要对对象进行一些解析...

function shipping_zones_shortcode()


  $delivery_zones = WC_Shipping_Zones::get_zones();

  foreach ($delivery_zones as $key => $the_zone) 
    $my_zone = array(
      'name' => $the_zone['zone_name'],
      'location' => $the_zone['formatted_zone_location'],
      'methods' => array_map(function ($method) 
        return array(
          'title' => $method->method_title,
          'cost' => isset($method->cost) ? $method->cost : 0,
        );
      , $the_zone['shipping_methods']),

    );

    print_r($my_zone);
  


add_shortcode('list_shipping_zones', 'shipping_zones_shortcode', 10);

输出:

Array
  (
    [name] => United States (US)
    [location] => United States (US)
    [methods] => Array
  (
  [1] => Array
    (
      [title] => Free shipping
      [cost] => 0
    )
    [2] => Array
    (
      [title] => Flat rate
      [cost] => 90
    )
  )
)

【讨论】:

当我们在同一个区域有多个“位置”时,返回的数据只是其中的几个加上thext“和xx其他区域”。如何获取完整的位置列表?

以上是关于Woocommerce 在前端列出并显示 WooCommerce 运输区域的主要内容,如果未能解决你的问题,请参考以下文章

Woocommerce 重新排序单页钩子,描述显示两次

预定的销售已结束,但在查看产品时,可变产品似乎仍在销售 - Woocommerce

如何将Woocommerce搜索结果顺序更改为从低到高的价格

Woocommerce 客户在 Paypal 重定向之前退出

如果 WooCommerce 结帐中存在某些产品类别,请删除其他产品

WooCommerce 在前端自定义日期后显示产品总销售额