我将 WooCommerce 与 WooCommerce 多语言一起使用。 所以我使用不同的货币。我想根据当前使用的货币取消帐单和送货国家/地区。
我发现此功能可以取消设置国家/地区:
function woo_remove_specific_country( $country ) {
unset($country["US"]);
unset($country["GB"]);
return $country;
}
add_filter( 'woocommerce_countries', 'woo_remove_specific_country', 10, 1 );
但是我想改变这个函数所以里面有条件逻辑。因此,例如当 EUR
是当前活动货币 US
并且 GB
必须是未设置的国家/地区时。如果 GBP
是当前的活动货币,则只需取消设置 US
。
所以我找到了这个来获取当前的活跃货币:
$currency = get_woocommerce_currency();
当使用它在短代码中测试它时,它为我提供了正确的活动货币。
所以我重写了函数:
function woo_remove_specific_country( $country ) {
$currency = get_woocommerce_currency();
if ($currency == 'EUR') {
unset($country["US"]);
unset($country["GB"]);
}
if ($currency == 'GBP') {
unset($country["US"]);
}
return $country;
}
add_filter( 'woocommerce_countries', 'woo_remove_specific_country', 10, 1 );
但这行不通。看起来它总是采用带有 EUR
的 if 的方式,而当时我的货币是 GBP
。