在 Woocommerce 结帐中,如果 billing_company
不为空,我会尝试取消税款:
这是我的代码
add_action( 'woocommerce_checkout_update_order_review', 'bbloomer_taxexempt_checkout_based_on_zip' );
function bbloomer_taxexempt_checkout_based_on_zip( $post_data ) {
global $woocommerce;
$woocommerce->customer->set_is_vat_exempt( false );
$Pay_options=$_POST['Pay_options'];
parse_str($post_data);
global $woocommerce;
if ( $billing_company != null) $woocommerce->customer->set_is_vat_exempt( true );
}
在 IF
语句中,我还需要检查 billing_country
是否为“克罗地亚”。
我怎样才能实现这个目标?
最佳答案
您可以使用以下代码使结算公司结帐字段更新结帐更改(不使用任何其他 javascript 或 jQuery 代码),并检查国家/地区“HR”(克罗地亚) em>:
add_filter( 'woocommerce_checkout_fields' , 'billing_company_trigger_update_checkout_on_change', 10, 1 );
function billing_company_trigger_update_checkout_on_change( $fields ) {
$fields['billing']['billing_company']['class'][] = 'update_totals_on_change';
return $fields;
}
add_action( 'woocommerce_checkout_update_order_review', 'checkout_vat_exempt_based_on_billing_company', 10, 1 );
function checkout_vat_exempt_based_on_billing_company( $post_data ) {
parse_str($post_data, $results); // Since Php 7.2, the 2nd argument is recommended in parse_str() function
extract($results);
$customer = WC()->customer;
// When billing company is filled and country is Croatia: Exempt taxes
if ( ! empty($billing_company) && $billing_country === 'HR' && ! $customer->is_vat_exempt() ) {
$customer->set_is_vat_exempt( true );
}
elseif ( $customer->is_vat_exempt() ){
$customer->set_is_vat_exempt( false );
}
}
要处理发货国家/地区而不是帐单国家/地区,只需在代码中将变量 $billing_country
替换为 $shipping_country
代码位于事件子主题(或事件主题)的functions.php 文件中。已测试且有效。
注意:有一段时间,global $woocommerce
和 $woocommerce
被简单地替换为 WC()
关于php - 在 WooCommerce 结帐中禁用公司和特定国家/地区的税费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56157221/