2016-05-31 14 views
1

입니다. 당점에서는 UPS 및 USPS 배송 방법을 사용하고 있습니다.
우리가 판매하는 제품의 모양과 크기는 모두 다르기 때문에 테이블 속도 옵션이 아닌 API를 사용해야합니다.WooCommerce 한도 기준의 배송 방법은

사용자가 AK, HI, PR, GU, AS, VI 또는 UM에서 우편 번호를 입력 할 때만 USPS 요금이 표시되기를 원합니다. 이미 조건부 해운 및 지불 방법을 시도했지만 작동하지 않는 것 같습니다. 내가 틀렸어도 체크 아웃시 반환되는 요금/옵션에 대해서만 작동하며 필요한 카트가 아닙니다.

이 질문에 대한 답변을 얻으려는 많은 다른 페이지를 온라인에서 찾아보고 응답을 일치시키기 위해 functions.php 파일을 편집 해 보았지만 모든 답변이 오래된 것으로 보입니다. 여기

http://support.wooforce.com/hc/en-us/articles/207515625-Hiding-disabling-a-shipping-service 내가 링크에서 사용자 정의한 코드입니다 내가 가지고 : 나는 찾을 수

가장 가까운 대답은, 그러나 그것은 내가 그것을 시도 할 때 작동하지 않습니다, 아래 링크에서 옵션 # 2에 그것을 작동 시키려고 노력했다. 알래스카, 하와이, 푸에르토 리코, 괌, 아메리칸 사모아, 버진 아일랜드 및 마이너 섬을 제외한 모든 주마다이 메서드를 제외하고 싶습니다.

도움을 주시면 감사하겠습니다.

add_filter('woocommerce_package_rates', 'wf_hide_undesired_service_for_required_states', 10, 2); 

function wf_hide_undesired_service_for_required_states($rates, $package) 
{ 
    $exclude = array(
     'wf_shipping_usps:D_PRIORITY_MAIL' => array(
     'AL', 'AR', 'AZ', 'CA', 'CO', 'CT', 'DC', 'DE', 'FL', 'GA', 'IA', 'ID', 'IL', 'IN', 'KS', 'KY', 'LA', 'MA', 'MD', 'ME', 'MI', 'MN', 'MO', 'MS', 'MT', 'NC', 'ND', 'NE', 'NH', 'NJ', 'NM', 'NV', 'NY', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VA', 'VT', 'WA', 'WI', 'WV', 'WY' 
     ) 
    ); 
    if (is_array($exclude)) { 
     foreach($exclude as $shipping_method => $excluded_states) { 
      if (in_array(WC()->customer->shipping_state, $excluded_states)) { 
       unset($rates[$shipping_method]); 
      } 
     } 
    } 

    return $rates; 
} 

답변

0

내 이해 당, 당신은 고객이 VI, 또는 UM, AS, 상태 AK, HI, PR, GU를 선택하는 경우에만 USPS 실시간 속도를 보여주고 싶어요.

솔루션은 여기에서 자세히 설명됩니다. http://www.xadapter.com/2016/06/17/woocommerce-filter-shipping-methods-based-on-state/

아래의 코드 스 니펫은 WooForce USPS Shipping Plugin의 변경 사항없이 작동합니다. 다른 공급 업체의 WooCommerce USPS 플러그인을 사용하는 경우 변수 $eligible_services_for_states_list의 요소를 해당 플러그인과 관련된 적절한 값으로 변경하여 작동하게 할 수 있습니다.

add_filter('woocommerce_package_rates', 'xa_show_shipping_method_based_on_state', 10, 2); 

function xa_show_shipping_method_based_on_state($available_shipping_methods, $package) { 

    $states_list = array('AK', 'HI', 'PR', 'GU', 'AS', 'VI', 'UM'); 

    $eligible_services_for_states_list = array(
      'wf_shipping_usps:flat_rate_box_priority', 
      'wf_shipping_usps:flat_rate_box_express', 
      'wf_shipping_usps:D_FIRST_CLASS', 
      'wf_shipping_usps:D_EXPRESS_MAIL', 
      'wf_shipping_usps:D_STANDARD_POST', 
      'wf_shipping_usps:D_MEDIA_MAIL', 
      'wf_shipping_usps:D_LIBRARY_MAIL', 
      'wf_shipping_usps:D_PRIORITY_MAIL', 
      'wf_shipping_usps:I_EXPRESS_MAIL', 
      'wf_shipping_usps:I_PRIORITY_MAIL', 
      'wf_shipping_usps:I_GLOBAL_EXPRESS', 
      'wf_shipping_usps:I_FIRST_CLASS', 
      'wf_shipping_usps:I_POSTCARDS',   
     ); 

    // Basically, below code will reset shipping services if the shipping 
    // state is other than defined states_list. 
    if (!in_array(WC()->customer->shipping_state, $states_list)) { 
     foreach ($eligible_services_for_states_list as &$value) { 
      unset($available_shipping_methods[$value]);  
     } 
    } 

    return $available_shipping_methods; 
} 

희망이 있습니다.