2016-10-03 7 views
1

하는 고객에게 통지하고 난 아래의 코드를 ? 나는 각국과 캐나다를 열거하는 것을 꺼리는 것이 좋을 것입니다.WooCommerce 운송 내가 체크 아웃시 선적 통지를 추가 할 필요가

나는 $woocommerce->customer->get_shipping_country()을 보았지만 내 functions.php에서이를 구현하는 방법을 잘 모르며, 각 국가에서 Woocommerce가 사용하는 코드는 무엇입니까?

나를 도와 주셔서 감사합니다!

답변

2

여기에, 내부의 jQuery를 사용하여 재 방문 코드, 당신은 나라를 출하로 선정 될 것입니다 어느 나라 모든 경우에 모른다. 어떤 플러그인 파일도

function notice_shipping(){ 
    ?> 

    <script> 
     jQuery(document).ready(function($){ 

      // Set the country code (That will NOT display the message) 
      var countryCode = 'FR'; 

      var adressType = 'billing'; 

      // Detecting If shipping Country is going to be used 
      $('#ship-to-different-address-checkbox').click(function(){ 

       if($('.shipping_address').css('display') == 'none'){ 
        adressType = 'billing'; 
       } else { 
        adressType = 'shipping'; 
       } 
       // console.log($adressType); 
      }); 

      // Showing or hidding the message 
      $('select#billing_country, select#shipping_country').change(function(){ 

       if(adressType == 'billing') { 
        selectedCountry = $('select#billing_country').val(); 
       } 
       else if(adressType == 'shipping') { 
        selectedCountry = $('select#shipping_country').val(); 
       } 

       if(selectedCountry == countryCode){ 
        $('.shipping-notice').hide(); 
        // console.log('hide'); 
       } 
       else { 
        $('.shipping-notice').show(); 
        // console.log('show'); 
       } 
       // console.log(selectedCountry); 
      }); 
     }); 
    </script> 

    <?php 

    echo '<p id="allow" class="shipping-notice" style="display:none">Please allow 5-10 business days for delivery after order processing.</p>'; 
} 
add_action('woocommerce_before_order_notes', 'notice_shipping'); 

이 코드는 활성 자식 테마 (또는 테마)의 function.php 파일에 간다 나 : 여기

는 코드입니다.

이 코드는 테스트를 거쳐 완전히 작동합니다.

see here a raw demo(임시)입니다. 여기 체크 아웃시 메시지를 표시하지 않는 국가는 프랑스입니다.

+0

니스! 나는 JS가 더 나은 해결책일지도 모른다고 생각하고 있었지만 육체적 인 시간은 없었습니다. – helgatheviking

+0

@helgatheviking Thanks :) ... 나는 또한 매우 복잡하고 새로운 매우 새로운 WooCommerce 프로젝트에 조금 바빴다. 그래서 내 대답은 늦게 도착합니다. 당신의 대답은 굉장합니다! – LoicTheAztec

+0

와우 감사합니다! 내가 필요한 것! – Xenocide122

2

woocommerce_before_order_notes에서 고객의 주소를 확실히 알 수 있다고 생각하지 않습니다. 다음을 시도해 볼 수는 있지만 고객이 청구서 수신 주소를 제출할 때까지 작동하는지 확신 할 수 없습니다. 고객이 항상 등록되어 있지 않기 때문에

// adds order note at checkout page  
function notice_shipping($checkout) { 
    $country = WC()->customer->get_shipping_country(); 
    if($country != 'US'){ 
     echo '<p id="allow">Please allow 5-10 business days for delivery after order processing.</p>'; 
    } 
} 

add_action('woocommerce_before_order_notes', 'notice_shipping'); 
+0

오 참, 참. 나는 그것을 보여줄 수있는 더 좋은 곳을 찾아야 할 것이다. 어떤 제안? 나는 그 갈고리를 올려다보고 아침에 생각해야 할 것이다. 나는 내가 집을 떠날 때까지 아침까지 시험 할 수 없을 것이다. 감사! – Xenocide122