给国际客户的 WooCommerce 发货通知
WooCommerce shipping notice to International customers
我需要在结账时添加发货通知,我有以下代码:
// 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.phpand 中实现它以及 Woocommerce 在每个国家/地区使用什么代码?
感谢您帮助我!
我认为您不能保证知道 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' );
这是您重新访问的代码,里面有一些 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 文件中或任何插件文件中。
此代码已经过测试并且功能齐全。
You can see here a raw demo (temporary). Here the chosen country that will not display the message on checkout is France.
我需要在结账时添加发货通知,我有以下代码:
// 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.phpand 中实现它以及 Woocommerce 在每个国家/地区使用什么代码?
感谢您帮助我!
我认为您不能保证知道 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' );
这是您重新访问的代码,里面有一些 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 文件中或任何插件文件中。
此代码已经过测试并且功能齐全。
You can see here a raw demo (temporary). Here the chosen country that will not display the message on checkout is France.