wordpress 如何在购物篮上显示正确的税(结账前)?

qzlgjiam  于 2023-05-06  发布在  WordPress
关注(0)|答案(1)|浏览(160)

我有个简单的问题
我为不同的国家设定了多种税率。但是,在篮子页面上--当到目前为止还没有访问过结账页面时--它显示了来自基准国的税收。
在我的情况下:我有一个基于在AT的商店。我已经为AT和CH设置了税。如果用户使用瑞士IP访问,我将国家列表限制为瑞士,并设置一个PHP变量。尽管如此,该国不再属于woocommerce_countries,WC使用基准国税收设置计算税收。
看看这些图片:
taxes in basket - taxes on checkout
我想在结账前出示正确的税金。我已经发现,当用户在结账页面上选择了一个国家,并且有一个“$woocommerce-〉customer”节点可用时,就会显示正确的税收。但我很难做到。
有人知道怎么做吗?下面是我的插件代码,它不工作:

define('USERCOUNTRY', get_country_proper()); // returns 'CH'
$customer = new WC_Customer();
WC()->customer->set_country(USERCOUNTRY);

结果:

Fatal error: Call to a member function get() on a non-object in wp-content/plugins/woocommerce/includes/class-wc-customer.php on line 27

更新:将在购物车页面上使用的税(在结帐时输入国家/地区之前)在这里使用:

Woocommerce -〉设置-〉税-〉默认客户地址:【商店基地国家|无] http://docs.woothemes.com/document/setting-up-taxes-in-woocommerce/
好的,我可以通过脚本修改这个吗?
谢谢你的帮助

m1m5dgzv

m1m5dgzv1#

实际上,有一个钩子。

// this is used for taxing:
add_filter('woocommerce_countries_base_country', 'set_base_to_usercountry', 1, 1);

// and this is used for shipping:
add_filter('woocommerce_customer_default_location', 'set_base_to_usercountry', 1, 1);

function set_base_to_usercountry($country) {
    $country = USERCOUNTRY; // comes from a geoIP lookup in my case.
    return $country;
}

// and this is also needed not to have trouble with the "modded_tax".
// (which looks like rounding issues, but is a tax conversion issue.)
add_filter('woocommerce_customer_taxable_address', 'alter_taxable_address', 1, 1);
function alter_taxable_address($address) {
    // $address comes as an array with 4 elements. 
    // first element keeps the 2-digit country code.
    $address[0] = USERCOUNTRY; 
    return $address;
}

相关问题