是否有一个过滤器或挂钩可以在woocommerce中更改WC_Tax :: get_rate_label($ key)?

时间:2019-06-16 12:26:02

标签: email woocommerce label checkout tax

我正在尝试更改购物车上的“税务”标签,结帐订单审核和电子邮件。

我试图用'woocommerce_get_order_item_totals'和'woocommerce_get_formatted_order_total'创建一个函数。它要么全部删除,要么添加新行,但是更改了$ tax_totals [$ code]-> label

我有一个复选框,使客户可以为订单申请免税。这一切都很好。 如果选择此项,则会将“ TAX Amount”设置为0.00,但标签会保留在VAT或TAX或BTW上(荷兰标签) 我在后端添加了零利率, 用于识别增值税的短语匹配(增值税,增值税,增值税,增值税,增值税,TVA,增值税,BTW,B.T.W。,免税,vrijgesteld van BTW) 我按国家/地区代码添加了零费率 GB免税(0%) NL vrijgesteld van BTW(0%)

无论在哪个国家/地区,它仍然以增值税或(BTW)的形式显示在购物车,结帐,订单审核和电子邮件上。

This is what I want to change

1 个答案:

答案 0 :(得分:0)

我已经寻找了好几天没有运气的可行解决方案。 但是我刚刚找到了一个解决方案,不确定是破解还是良好的编码,但是对我有用。 我的函数中有这段代码。

add_action( woocommerce_checkout_update_order_review','taxexempt_checkout_based_on_checkbox');
function taxexempt_checkout_based_on_checkbox( $post_data) {
global $woocommerce;    
$woocommerce->customer->set_is_vat_exempt( false );
parse_str($post_data);

if ( $billing_taxexempt === '1' && $billing_confirmed === '1' && 
!empty($billing_signature) && ! empty($billing_declaration)){
    $woocommerce->customer->set_is_vat_exempt( true );  

 } 
 }

这将对订单应用免税。 我在.... set_is_vat_exempt(true)下面添加了一个过滤器。

add_filter( 'woocommerce_countries_tax_or_vat', function () { return __( 'Tax Exempt', 'woocommerce' ); }); 

然后我添加了一个发现的函数// Change "Billing Details" text to "Shipping Details" on Woocommerce checkout page

我做了一点修改,但是对我有用。

function wc_change_field_strings( $translated_text, $text, $domain ) {
$language = get_locale();
$domain = 'woocommerce';
if($language == 'en_GB' ){
    switch ( $translated_text ) {
    case 'Tax Exempt' :
        $translated_text = __( 'Tax Exempt', $domain );
        break;
}
return $translated_text;
}

if($language == 'nl_NL' ){
    switch ( $translated_text ) {
    case 'Tax Exempt' :
        $translated_text = __( 'vrijgesteld van BTW', $domain);
        break;
}
return $translated_text;
}
}
add_filter( 'gettext', 'wc_change_field_strings', 20, 3 );

必须添加默认大小写,稍后会做,但适用于该解决方案。 也许对其他人有用,或者如果您有更好的解决方案,请告诉我。

And the result looks like this.