结帐时的 WooCommerce 非欧盟增值税消息 - 更改代码以包含数组而不是单个值

WooCommerce NON EU VAT message on checkout - changing code to include an array instead of single value

我在结帐时使用的是来自 BBloomer 的修改后的代码段。

我查找所选国家,如果国家是挪威 'NO',它会在总金额后回显有关非欧盟国家税务信息的消息。

因为我们现在也运送到英国和斯威奇兰,我想在 mu 脚本中包括这些国家。

这意味着 var countryCode = 'NO';应该像 var countryCode = array( 'NO','UK','CH' );或者?

其余的大神也需要处理数组而不是单个值。

希望大家能帮忙。

// The message
 
add_action( 'woocommerce_review_order_after_order_total', 'bbloomer_echo_notice_shipping' );
  
function bbloomer_echo_notice_shipping() {
   echo '<tr class="non-eu-tax-notice" style="display:none">
   <th>'. __( 'Notice', 'woocommerce' ) .'</th>
   <td data-title=" '. __( 'Notice', 'woocommerce' ) .' ">'. __( 'No VAT charged. Please be aware that VAT and customs can be declared in your home country. More info here', 'woocommerce' ) .'</td>
   </tr>';
}
  

// Show or hide message based on billing country
  
add_action( 'woocommerce_checkout_after_order_review', 'bbloomer_show_notice_shipping' );
  
function bbloomer_show_notice_shipping(){
     
   wc_enqueue_js( "
  
      // Set the country code that will display the message
      var countryCode = 'NO';
 
      // Get country code from checkout
      selectedCountry = $('select#billing_country').val();
 
      // Function to toggle message
      function toggle_upsell( selectedCountry ) {   
         if( selectedCountry == countryCode ){
            $('.non-eu-tax-notice').show();
         }
         else {
            $('.non-eu-tax-notice').hide();
         }
      }
 
      // Call function
      toggle_upsell( selectedCountry );
      $('select#billing_country').change(function(){
         toggle_upsell( this.value );         
      });
  
   " );
     
}

我可以帮忙! :D

我是 WooCommerce: Show Message Upon Country Selection @ Checkout 教程作者。

在jQuery/JS中可以定义一个数组:

var countryCode = [ 'NO', 'GB', 'CH' ];

此外,您可以使用等效于 PHP 的 in_array() 的 JS,即 inArray() 来查看元素是否在定义的国家/地区列表中:

if ( $.inArray(selectedCountry,countryCode) !== -1 ){

最终代码:

function bbloomer_show_notice_shipping(){
     
   wc_enqueue_js( "
  
      // Set the country code that will display the message
      var countryCode = [ 'NO', 'GB', 'CH' ];
 
      // Get country code from checkout
      selectedCountry = $('select#billing_country').val();
 
      // Function to toggle message
      function toggle_upsell( selectedCountry ) {   
         if ( $.inArray(selectedCountry,countryCode) !== -1 ){
            $('.non-eu-tax-notice').show();
         }
         else {
            $('.non-eu-tax-notice').hide();
         }
      }
 
      // Call function
      toggle_upsell( selectedCountry );
      $('select#billing_country').change(function(){
         toggle_upsell( this.value );         
      });
  
   " );
     
}