在 Woocommerce 结帐页面中删除税额后的 "estimated for {country}" 文本
Remove "estimated for {country}" text after tax amount in Woocommerce checkout page
我在我的 Woocommerce 在线商店中设置了 19% 的标准税额。不幸的是 - 现在有一个文本 "estimated for Germany" 在我的结帐页面中(包括 20,12 €... 部分低于总金额(见下图)。我猜它显示文本是因为计算的税额有很多小数。
HTML
<small class="includes_tax">
(includes
<span class="woocommerce-Price-amount amount">20.12
<span class="woocommerce-Price-currencySymbol">€<span>
</span> estimated for Germany)
</small>
使用 20% 的税额不是这种情况。
如何删除"estimated for Germany"文字?
我找不到任何过滤器或 html class 来定位文本。
负责的代码是 in there,位于 wc_cart_totals_order_total_html()
函数中。
所以我们可以使用挂钩在 woocommerce_cart_totals_order_total_html
过滤器挂钩中的挂钩函数,我们将在其中删除这种烦人的行为(增加了自 2.6.x 及更高版本的兼容性):
add_filter( 'woocommerce_cart_totals_order_total_html', 'custom_cart_totals_order_total_html', 20, 1 );
function custom_cart_totals_order_total_html( $value ){
$value = '<strong>' . WC()->cart->get_total() . '</strong> ';
// If prices are tax inclusive, show taxes here.
$incl_tax_display_cart = version_compare( WC_VERSION, '3.3', '<' ) ? WC()->cart->tax_display_cart == 'incl' : WC()->cart->display_prices_including_tax();
if ( wc_tax_enabled() && $incl_tax_display_cart ) {
$tax_string_array = array();
$cart_tax_totals = WC()->cart->get_tax_totals();
if ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ) {
foreach ( $cart_tax_totals as $code => $tax ) {
$tax_string_array[] = sprintf( '%s %s', $tax->formatted_amount, $tax->label );
}
} elseif ( ! empty( $cart_tax_totals ) ) {
$tax_string_array[] = sprintf( '%s %s', wc_price( WC()->cart->get_taxes_total( true, true ) ), WC()->countries->tax_or_vat() );
}
if ( ! empty( $tax_string_array ) ) {
$taxable_address = WC()->customer->get_taxable_address();
$estimated_text = '';
$value .= '<small class="includes_tax">' . sprintf( __( '(includes %s)', 'woocommerce' ), implode( ', ', $tax_string_array ) . $estimated_text ) . '</small>';
}
}
return $value;
}
此代码在您的活动子主题(或主题)的 function.php 文件中。
已测试并有效。
为了简单地从我使用的购物车总数中删除该文本:
add_filter( 'woocommerce_cart_totals_order_total_html', function ($html) {
return substr($html, 0, strpos($html, '<small class="includes_tax">'));
}, 10, 2 );
我在我的 Woocommerce 在线商店中设置了 19% 的标准税额。不幸的是 - 现在有一个文本 "estimated for Germany" 在我的结帐页面中(包括 20,12 €... 部分低于总金额(见下图)。我猜它显示文本是因为计算的税额有很多小数。
HTML
<small class="includes_tax">
(includes
<span class="woocommerce-Price-amount amount">20.12
<span class="woocommerce-Price-currencySymbol">€<span>
</span> estimated for Germany)
</small>
使用 20% 的税额不是这种情况。
如何删除"estimated for Germany"文字?
我找不到任何过滤器或 html class 来定位文本。
负责的代码是 in there,位于 wc_cart_totals_order_total_html()
函数中。
所以我们可以使用挂钩在 woocommerce_cart_totals_order_total_html
过滤器挂钩中的挂钩函数,我们将在其中删除这种烦人的行为(增加了自 2.6.x 及更高版本的兼容性):
add_filter( 'woocommerce_cart_totals_order_total_html', 'custom_cart_totals_order_total_html', 20, 1 );
function custom_cart_totals_order_total_html( $value ){
$value = '<strong>' . WC()->cart->get_total() . '</strong> ';
// If prices are tax inclusive, show taxes here.
$incl_tax_display_cart = version_compare( WC_VERSION, '3.3', '<' ) ? WC()->cart->tax_display_cart == 'incl' : WC()->cart->display_prices_including_tax();
if ( wc_tax_enabled() && $incl_tax_display_cart ) {
$tax_string_array = array();
$cart_tax_totals = WC()->cart->get_tax_totals();
if ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ) {
foreach ( $cart_tax_totals as $code => $tax ) {
$tax_string_array[] = sprintf( '%s %s', $tax->formatted_amount, $tax->label );
}
} elseif ( ! empty( $cart_tax_totals ) ) {
$tax_string_array[] = sprintf( '%s %s', wc_price( WC()->cart->get_taxes_total( true, true ) ), WC()->countries->tax_or_vat() );
}
if ( ! empty( $tax_string_array ) ) {
$taxable_address = WC()->customer->get_taxable_address();
$estimated_text = '';
$value .= '<small class="includes_tax">' . sprintf( __( '(includes %s)', 'woocommerce' ), implode( ', ', $tax_string_array ) . $estimated_text ) . '</small>';
}
}
return $value;
}
此代码在您的活动子主题(或主题)的 function.php 文件中。
已测试并有效。
为了简单地从我使用的购物车总数中删除该文本:
add_filter( 'woocommerce_cart_totals_order_total_html', function ($html) {
return substr($html, 0, strpos($html, '<small class="includes_tax">'));
}, 10, 2 );