2017-12-18 7 views
0

私はWooCommerce 3.2.6を使用しています。達成したいこと個々の製品ごとに異なる配送ゾーンを設定したいと思っています。WooCommerce各製品の条件付き配送ゾーンの選択

私はカスタムボックスの寸法に基づいて計算された配送料が必要な商品があります。料金計算にはFEDEX APIを使用しています。これを達成するには、特定の製品にのみ異なる出荷ゾーンを設定するコードまたはフィルタを必要とします。

ここで私は商品をShipping Zoneでマップすることができましたが、次に実際にその配送エリアのみを設定して、ウェブサイトのフロントエンドに料金を表示することはできませんでした。どんな助けも高く評価されます。

add_action('wp_head','show_only_selected_zone', 2, 10); 
function show_only_selected_zone() { 

//if(is_product) { 
global $post; 
$product_id = get_the_ID(); 
$product_name = get_the_title($product_id); 
$explode_product = explode(" ",$product_name); 

     $all_zones = orig_get_all_zones(); 

     foreach ($all_zones as $key => $zone) { 
      //echo "<pre>";print_r($zone);echo "</pre>"; 
      $extracted_zone = $zone['zone_name']; 
      $zone_id = $zone['zone_id']; 
      if(in_array($extracted_zone,$explode_product)) { 
       //echo 'This is Extracted Zone: '.$extracted_zone. ' '. $zone_id; 
       $set_zone_id = $zone_id; 
       echo $set_zone_id; 
       $zone = WC_Shipping_Zones::set_zone_by('zone_id', $set_zone_id); 
       //echo 'Zone Result May be: '.$zone; 
       break; 
      } 

     //echo "<pre>";print_r($zone);echo "</pre>"; 
     //echo $zone['zone_name'].'<br>'; 
     } 

} 


function orig_get_all_zones() { 
if(class_exists('WC_Shipping_Zones')) { 
    $all_zones = WC_Shipping_Zones::get_zones(); 
    return $all_zones; 
} 
return false; 
} 
function orig_get_zone($zone_id = 0) { 
if(class_exists('WC_Shipping_Zones')) { 
    $the_zone = WC_Shipping_Zones::get_zone($zone_id); 
    return $the_zone; 
} 
return false; 
} 

答えて

0

まず、あなたの代わりに$zoneWC_Shipping_Zonesなし)である必要は必要があります。今

...、方法使用可能な任意のセッターWC_Shipping_Zones classについては

$zone = WC_Shipping_Zone::set_zone_by('zone_id', $set_zone_id); 

ありません

私は実際にあなたがしようとしているように簡単な方法で出荷ゾーンで製品を設定することはできないと思う(私は間違っているかもしれません)可能であれば、これは本当の先進的な開発であり、StackOverFlowにとっては広すぎるものになるでしょう。