根据运送国家/地区在 WooCommerce 结帐中显示自定义消息
Show custom message in WooCommerce checkout based on shipping country
我目前正在使用以下代码显示基于国家/地区的自定义消息:
add_action( 'woocommerce_before_checkout_billing_form', 'display_shipping_notice' );
function display_shipping_notice() {
echo '<div class="shipping-notice woocommerce-info" style="display:none">Please allow 5-10 business days for delivery after order processing.</div>';
}
add_action( 'woocommerce_after_checkout_form', 'show_shipping_notice_js' );
function show_shipping_notice_js(){
?>
<script>
jQuery(document).ready(function($){
// Set the country code (That will display the message)
var countryCode = 'GB';
$('select#billing_country').change(function(){
selectedCountry = $('select#billing_country').val();
if( selectedCountry == countryCode ){
$('.shipping-notice').show();
}
else {
$('.shipping-notice').hide();
}
});
});
</script>
<?php
}
此代码的问题在于它只会在更改或选择国家/地区时显示消息。但是,大多数客户已经预先填写了他们的国家/地区,因此不会显示自定义消息。
我正在尝试找到一种方法来更改代码,以便在选择正确的国家/地区时始终显示消息。
我已经重新访问了您的代码,更改了:
- 成功消息(蓝色)到通知消息(绿色),
- 加载 DOM 时处理加载国家/地区的 JQuery 代码。
但请注意,您的 jQuery 代码正在处理账单国家 (请参阅最后的运送国家)。
请尝试以下操作:
add_action( 'woocommerce_checkout_before_customer_details', 'display_shipping_notice' );
function display_shipping_notice() {
echo '<div class="shipping-notice woocommerce-message" role="alert" style="display:none">Please allow 5-10 business days for delivery after order processing.</div>';
}
add_action( 'woocommerce_after_checkout_form', 'show_shipping_notice_js' );
function show_shipping_notice_js(){
?>
<script>
jQuery(function($){
var countryCode = 'GB', // Set the country code (That will display the message)
countryField = 'select#billing_country'; // The Field selector to target
function showHideShippingNotice( countryCode, countryField ){
if( $(countryField).val() === countryCode ){
$('.shipping-notice').show();
}
else {
$('.shipping-notice').hide();
}
}
// On Ready (after DOM is loaded)
showHideShippingNotice( countryCode, countryField );
// On billing country change (Live event)
$('form.checkout').on('change', countryField, function() {
showHideShippingNotice( countryCode, countryField );
});
});
</script>
<?php
}
代码进入活动子主题(或活动主题)的 functions.php 文件。
已测试并有效。
注意:如果您想处理发货国家而不是账单国家,替换:
countryField = 'select#billing_country'; // The Field selector to target
有了这个:
countryField = 'select#shipping_country'; // The Field selector to target
现在它将处理运送国家。
我目前正在使用以下代码显示基于国家/地区的自定义消息:
add_action( 'woocommerce_before_checkout_billing_form', 'display_shipping_notice' );
function display_shipping_notice() {
echo '<div class="shipping-notice woocommerce-info" style="display:none">Please allow 5-10 business days for delivery after order processing.</div>';
}
add_action( 'woocommerce_after_checkout_form', 'show_shipping_notice_js' );
function show_shipping_notice_js(){
?>
<script>
jQuery(document).ready(function($){
// Set the country code (That will display the message)
var countryCode = 'GB';
$('select#billing_country').change(function(){
selectedCountry = $('select#billing_country').val();
if( selectedCountry == countryCode ){
$('.shipping-notice').show();
}
else {
$('.shipping-notice').hide();
}
});
});
</script>
<?php
}
此代码的问题在于它只会在更改或选择国家/地区时显示消息。但是,大多数客户已经预先填写了他们的国家/地区,因此不会显示自定义消息。
我正在尝试找到一种方法来更改代码,以便在选择正确的国家/地区时始终显示消息。
我已经重新访问了您的代码,更改了:
- 成功消息(蓝色)到通知消息(绿色),
- 加载 DOM 时处理加载国家/地区的 JQuery 代码。
但请注意,您的 jQuery 代码正在处理账单国家 (请参阅最后的运送国家)。
请尝试以下操作:
add_action( 'woocommerce_checkout_before_customer_details', 'display_shipping_notice' );
function display_shipping_notice() {
echo '<div class="shipping-notice woocommerce-message" role="alert" style="display:none">Please allow 5-10 business days for delivery after order processing.</div>';
}
add_action( 'woocommerce_after_checkout_form', 'show_shipping_notice_js' );
function show_shipping_notice_js(){
?>
<script>
jQuery(function($){
var countryCode = 'GB', // Set the country code (That will display the message)
countryField = 'select#billing_country'; // The Field selector to target
function showHideShippingNotice( countryCode, countryField ){
if( $(countryField).val() === countryCode ){
$('.shipping-notice').show();
}
else {
$('.shipping-notice').hide();
}
}
// On Ready (after DOM is loaded)
showHideShippingNotice( countryCode, countryField );
// On billing country change (Live event)
$('form.checkout').on('change', countryField, function() {
showHideShippingNotice( countryCode, countryField );
});
});
</script>
<?php
}
代码进入活动子主题(或活动主题)的 functions.php 文件。 已测试并有效。
注意:如果您想处理发货国家而不是账单国家,替换:
countryField = 'select#billing_country'; // The Field selector to target
有了这个:
countryField = 'select#shipping_country'; // The Field selector to target
现在它将处理运送国家。