問題描述
我正在嘗試專門為哥倫比亞國家/地區應用 20 公斤的強制性最低重量,如果購物車總重量低于此最低重量,則避免結賬.
I am trying to specifically apply a mandatory minimum weight of 20 kilos for the country of Colombia avoiding checkout if the total cart weight is under this minimal weight.
這是我的實際代碼,它允許我確定最小權重:
Here is my actual code, that allow me to fix a minimum weight:
add_action( 'woocommerce_check_cart_items', 'cldws_set_weight_requirements' );
function cldws_set_weight_requirements() {
// Only run in the Cart or Checkout pages
if( is_cart() || is_checkout() ) {
global $woocommerce;
// Set the minimum weight before checking out
$minimum_weight = 30;
// Get the Cart's content total weight
$cart_contents_weight = WC()->cart->cart_contents_weight;
// Compare values and add an error is Cart's total weight
if( $cart_contents_weight < $minimum_weight ) {
// Display our error message
wc_add_notice( sprintf('<strong>A Minimum Weight of %s%s is required before checking out.</strong>'
. '<br />Current cart weight: %s%s',
$minimum_weight,
get_option( 'woocommerce_weight_unit' ),
$cart_contents_weight,
get_option( 'woocommerce_weight_unit' ),
get_permalink( wc_get_page_id( 'shop' ) )
),
'error' );
}
}
}
我怎樣才能讓它只適用于哥倫比亞國家?
How can I make it work for only for Colombia country?
推薦答案
更新(針對阿根廷和哥倫比亞航運縣)
Update (for Argentina and Colombia shipping counties)
我已重新訪問您的代碼,使其僅適用于最小重量為 20 公斤的哥倫比亞.您需要檢查重量單位,因為它應該是Kg"(以公斤為單位).
I have revisited your code and make it work just for colombia with a minimal weight of 20 kilos. You will need to check the weight unit as it should be "Kg" (in Kilos).
代碼:
add_action( 'woocommerce_check_cart_items', 'checkout_required_min_weight_country_based' );
function checkout_required_min_weight_country_based() {
// Only on Cart or Checkout pages
if( ! ( is_cart() || is_checkout() ) ) return;
// Get the shipping country
$country = WC()->session->get('customer')['shipping_country'];
if( empty($country) ){
$country = WC()->session->get('customer')['billing_country'];
}
// For Colombia and Argentina shipping countries
if( in_array( $country, array('CO', 'AR') ) ){
// HERE Set the minimum weight
$minimum_weight = 20; // 20 kg
// Get the Cart's content total weight
$total_weight = WC()->cart->get_cart_contents_weight();
// If total weight is lower than minimum, we avoid checkout and display an error notice
if( $total_weight < $minimum_weight ) {
// Display an dynamic error notice
wc_add_notice( sprintf(
'<strong>A Minimum Weight of %s is required before checking out.</strong>'
. '<br />Current cart weight: %s',
wc_format_weight($minimum_weight),
wc_format_weight($total_weight)
), 'error' );
}
}
}
代碼位于活動子主題(或活動主題)的 function.php 文件中.經過測試和工作.
Code goes in function.php file of your active child theme (or active theme). Tested and work.
當哥倫比亞是檢測到的國家(或定義的國家)時,您將得到如下信息:
When Colombia is the detected country (or the defined country) you will get something like:
所有國家/地區的代碼相同:
The same code for all countries:
add_action( 'woocommerce_check_cart_items', 'checkout_required_min_weight' );
function checkout_required_min_weight() {
// Only on Cart or Checkout pages
if( ! ( is_cart() || is_checkout() ) ) return;
// HERE Set the minimum weight
$minimum_weight = 20; // 20 kg
// Get the Cart's content total weight
$total_weight = WC()->cart->get_cart_contents_weight();
// If total weight is lower than minimum, we avoid checkout and display an error notice
if( $total_weight < $minimum_weight ) {
// Display an dynamic error notice
wc_add_notice( sprintf(
'<strong>A Minimum Weight of %s is required before checking out.</strong>'
. '<br />Current cart weight: %s',
wc_format_weight($minimum_weight),
wc_format_weight($total_weight)
), 'error' );
}
}
代碼位于活動子主題(或活動主題)的 function.php 文件中.經過測試和工作.
Code goes in function.php file of your active child theme (or active theme). Tested and work.
這篇關于在 WooCommerce 中為特定國家/地區設置最小允許重量的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!