希望修改以下代码,因此如果国家是美国,目前这将增加1%
我需要35英镑的金额,不是百分比,只在英国国家/地区申请,邮编为BT*(所有BT邮编)
add_action( \'woocommerce_cart_calculate_fees\',\'woocommerce_custom_surcharge\' );
function woocommerce_custom_surcharge() {
global $woocommerce;
if ( is_admin() && ! defined( \'DOING_AJAX\' ) )
return;
$county = array(\'US\');
$percentage = 0.01;
if ( in_array( $woocommerce->customer->get_shipping_country(), $county ) ) :
$surcharge = ( $woocommerce->cart->cart_contents_total + $woocommerce->cart->shipping_total ) * $percentage;
$woocommerce->cart->add_fee( \'Surcharge\', $surcharge, true, \'\' );
endif;
}
最合适的回答,由SO网友:Rup 整理而成
以下是未经测试的代码修改版本:
function woocommerce_bt_postcode_surcharge() {
global $woocommerce;
if ( is_admin() && ! defined( \'DOING_AJAX\' ) )
return;
if ( $woocommerce->customer->get_shipping_country() === \'GB\' ) {
$postcode = $woocommerce->customer->get_shipping_postcode();
if ( isset( $postcode )
&& strtoupper( substr( trim( $postcode ), 0, 2 ) ) === \'BT\' ) {
$woocommerce->cart->add_fee( \'Surcharge\', 35, true, \'\' );
}
}
}
add_action( \'woocommerce_cart_calculate_fees\', \'woocommerce_bt_postcode_surcharge\' );
请注意
我复制了您对$woocommerce global的使用,但如果我自己写这篇文章,我会使用WC(),而不是add\\u费用行中的true标志,这意味着附加费是应纳税的。这就是你的意思吗?请参见add_fee 文件如果我是一位客户,我可能会希望得到一个比“附加费”更好的解释,因为这似乎是一个相当大的数额(但我不知道你在卖什么,为什么要收费)
我也不知道如何或何时召开这场活动。如果同一个购物车可以多次呼叫,那么在再次添加之前,您可能需要检查费用是否已经存在,尽管购物车本身也可能会重复删除费用,因为您已经添加了费用,但客户现在更改了他们的送货地址,因此不再是BT,并删除费用function woocommerce_bt_postcode_surcharge() {
global $woocommerce;
if ( is_admin() && ! defined( \'DOING_AJAX\' ) )
return;
if ( $woocommerce->customer->get_shipping_country() === \'GB\' ) {
$postcode = $woocommerce->customer->get_shipping_postcode();
if ( isset( $postcode ) ) {
$prefix = strtolower( substr ( trim ( $postcode ), 0, 2 ) );
// 35 surcharge for BT or IV
if ( $prefix === \'BT\' || $prefix === \'IV\' ) {
$woocommerce->cart->add_fee( \'Surcharge\', 35, true, \'\' );
}
// 50 surcharge for RG
if ( $prefix === \'RG\' ) {
$woocommerce->cart->add_fee( \'Surcharge\', 50, true, \'\' );
}
}
}
}
add_action( \'woocommerce_cart_calculate_fees\', \'woocommerce_bt_postcode_surcharge\' );