2017-12-18 29 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

먼저 당신의 $zone 대신 (WC_Shipping_Zones없이) 할 필요합니다 : 이제

..., 방법 가능한 세터 WC_Shipping_Zones class에 관해서는

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

이없는

나는 당신이 시도하고있는 것처럼 간단한 방법으로 선적 구역으로 제품을 설정할 수 없다고 생각합니다. (내가 잘못 생각한 것 같습니다). 이것이 가능하다면, StackOverFlow를 위해 너무 진보 된 진보 된 개발과 무언가가 될 것입니다.