如果 Woocommerce 中的值为 0,则隐藏自定义运费成本
Hide custom shipping fee cost if the value is 0 in Woocommerce
在 Woocommerce 中,我使用费用 API 向购物车添加了额外的运费。
我的代码是:
add_action( 'woocommerce_cart_calculate_fees', 'pt_add_handling_fee' );
function pt_add_handling_fee() {
$title = 'Maggiorazione Isole & Calabria';
global $woocommerce;
$peso_totale = $woocommerce->cart->cart_contents_weight;
$provincia = $woocommerce->customer->get_shipping_state();
// echo 'weight'.$woocommerce->cart->cart_contents_weight;
// echo 'price'.$woocommerce->cart->subtotal;
// Maggiorazione 5€ ogni 100kg per la Sardegna
if ($peso_totale > 99 && ($provincia == "CA" or $provincia == "NU")) {
$fee = $peso_totale / 100 * 5;
}
// Maggiorazione 3€ ogni 100kg per la Sicilia
if ($peso_totale > 99 && ($provincia == "AG" or $provincia == "CL")) {
$fee = $peso_totale / 100 * 3;
}
// Maggiorazione 2€ ogni 100kg per la Calabria
if ($peso_totale > 99 && ($provincia == "CZ" or $provincia == "CS")) {
$fee = $peso_totale / 100 * 2;
}
$woocommerce->cart->add_fee( $title, $fee, TRUE, 'standard' );
}
所以我对部分省份申请附加费,如果总重量大于99公斤
但问题是,对于其他省份,费用仍然是“0 €”。
当购物车总重量超过 99 公斤时,如何使此费用仅适用于定义的省份?
可能吗?感谢任何帮助。
您的代码有点过时,woocommerce_cart_calculate_fees
操作挂钩将 WC_Cart
对象作为可用参数。
global $woocommerce
与 $woocommerce->cart
或 $woocommerce->customer
现在简单地替换为:
WC()->cart
(WC_Cart
对象的实例)
WC()->customer
(WC_Customer
对象的实例)
要使费用仅适用于您的特定条件,请尝试重新访问此代码:
add_action( 'woocommerce_cart_calculate_fees', 'conditional_shipping_surcharge', 10, 1 );
function conditional_shipping_surcharge( $cart ) {
$targeted_weight = 100; // Define the starting targeted weight
$cart_weight = $cart->get_cart_contents_weight();
$shipping_state = WC()->customer->get_shipping_state();
$percent = 0; // Initializing
if ( $cart_weight >= $targeted_weight ) {
// 5 € of surcharge per 100kg for Sardinia
if ( in_array( $shipping_state, array('CA', 'NU') ) ) {
$percent = 5;
}
// 3 € of surcharge per 100kg for Sicily
elseif ( in_array( $shipping_state, array('AG', 'CL') ) ) {
$percent = 3;
}
// 2 € of surcharge per 100kg for Calabria
elseif ( in_array( $shipping_state, array('CZ', 'CS') ) ) {
$percent = 2;
}
}
if( $percent > 0 ){
// Fee calculation
$fee = $cart_weight * $percent / 100;
// Add calculated fee (Taxable for "standart" default tax class)
$cart->add_fee( __("Maggiorazione Isole & Calabria", "woocommerce"), $fee, true );
}
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
在 Woocommerce 中,我使用费用 API 向购物车添加了额外的运费。
我的代码是:
add_action( 'woocommerce_cart_calculate_fees', 'pt_add_handling_fee' );
function pt_add_handling_fee() {
$title = 'Maggiorazione Isole & Calabria';
global $woocommerce;
$peso_totale = $woocommerce->cart->cart_contents_weight;
$provincia = $woocommerce->customer->get_shipping_state();
// echo 'weight'.$woocommerce->cart->cart_contents_weight;
// echo 'price'.$woocommerce->cart->subtotal;
// Maggiorazione 5€ ogni 100kg per la Sardegna
if ($peso_totale > 99 && ($provincia == "CA" or $provincia == "NU")) {
$fee = $peso_totale / 100 * 5;
}
// Maggiorazione 3€ ogni 100kg per la Sicilia
if ($peso_totale > 99 && ($provincia == "AG" or $provincia == "CL")) {
$fee = $peso_totale / 100 * 3;
}
// Maggiorazione 2€ ogni 100kg per la Calabria
if ($peso_totale > 99 && ($provincia == "CZ" or $provincia == "CS")) {
$fee = $peso_totale / 100 * 2;
}
$woocommerce->cart->add_fee( $title, $fee, TRUE, 'standard' );
}
所以我对部分省份申请附加费,如果总重量大于99公斤
但问题是,对于其他省份,费用仍然是“0 €”。
当购物车总重量超过 99 公斤时,如何使此费用仅适用于定义的省份?
可能吗?感谢任何帮助。
您的代码有点过时,woocommerce_cart_calculate_fees
操作挂钩将 WC_Cart
对象作为可用参数。
global $woocommerce
与 $woocommerce->cart
或 $woocommerce->customer
现在简单地替换为:
WC()->cart
(WC_Cart
对象的实例)WC()->customer
(WC_Customer
对象的实例)
要使费用仅适用于您的特定条件,请尝试重新访问此代码:
add_action( 'woocommerce_cart_calculate_fees', 'conditional_shipping_surcharge', 10, 1 );
function conditional_shipping_surcharge( $cart ) {
$targeted_weight = 100; // Define the starting targeted weight
$cart_weight = $cart->get_cart_contents_weight();
$shipping_state = WC()->customer->get_shipping_state();
$percent = 0; // Initializing
if ( $cart_weight >= $targeted_weight ) {
// 5 € of surcharge per 100kg for Sardinia
if ( in_array( $shipping_state, array('CA', 'NU') ) ) {
$percent = 5;
}
// 3 € of surcharge per 100kg for Sicily
elseif ( in_array( $shipping_state, array('AG', 'CL') ) ) {
$percent = 3;
}
// 2 € of surcharge per 100kg for Calabria
elseif ( in_array( $shipping_state, array('CZ', 'CS') ) ) {
$percent = 2;
}
}
if( $percent > 0 ){
// Fee calculation
$fee = $cart_weight * $percent / 100;
// Add calculated fee (Taxable for "standart" default tax class)
$cart->add_fee( __("Maggiorazione Isole & Calabria", "woocommerce"), $fee, true );
}
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。