php - 在 WooCommerce 结帐中禁用公司和特定国家/地区的税费

标签 php wordpress woocommerce checkout country

在 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 是否为“克罗地亚”。

我怎样才能实现这个目标?

enter image description here

最佳答案

您可以使用以下代码使结算公司结帐字段更新结帐更改(不使用任何其他 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/

相关文章:

jquery - 将鼠标悬停在某个非 slider div 上时如何暂停 nivo slider ?

php - 如何为 Divi 主题的商店模块实现分页

php - 在 WooCommerce 帐户激活邮件中访问用户的名字(DOI 通过 WooCommerce Germanized)

php - {$variable} 在 PHP 中如何工作?

php - Mysql 查询选择多行数据

php - 如何在 PHP 中重写类常量?

php - 从mysql表中删除密码?

css - 删除 Magicline 使导航跳动

wordpress - 使用 XAMPP 重定向到安装页面的现有 Wordpress 站点的本地安装

javascript - WordPress php 下拉菜单点击即可