WooCommerce向国际客户发货通知

时间:2016-10-03 21:59:12

标签: php jquery wordpress woocommerce shipping

我需要在结帐时添加送货通知,我有以下代码:

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

add_action( 'woocommerce_before_order_notes', 'notice_shipping' );

我只需要知道是否有办法将此通知限制在国际客户手中?我不介意列出每个国家,加拿大将是一个很好的开始。

我见过$woocommerce->customer->get_shipping_country()但不完全确定如何在我的functions.php中实现它,以及Woocommerce对每个国家/地区使用的代码是什么?

感谢您帮助我!

2 个答案:

答案 0 :(得分:3)

以下是您重新访问的代码,其中包含一些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 (临时)此处所选国家/地区不会在结帐时显示消息。

答案 1 :(得分: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' );