#php #wordpress #woocommerce
#php #wordpress #woocommerce
Вопрос:
Я настроил НДС как включающий налоги на цифровые товары. В моей корзине и при оформлении заказа налог отображается после общей суммы как:
«(включает НДС в размере xy долларов США)»
Я бы предпочел то, что я видел на других сайтах магазинов:
«(включает расчетный НДС в размере xy долларов США для Германии)»
Мой вопрос:
1) является ли это настройкой темы, которую я использую, это подключаемый модуль или я могу настроить это в WooCommerce самостоятельно? Указана ли предполагаемая страна в корзине по геолокации?
2) могу ли я поместить текст о предполагаемом налоге перед ценой с помощью привязки или фильтра?
Ответ №1:
Для вопроса 2 попробуйте это
add_filter( 'woocommerce_cart_total', 'wc_prefix_text_on_price' );
function wc_prefix_text_on_price( $price ) {
$prefix = 'estimated tax';
return $prefix . $price;
}
Комментарии:
1. отлично, спасибо. Я отредактировал ваш ответ и поменял местами $ suffix и $ price … теперь нам просто нужно найти фактическую оценочную налоговую стоимость, поэтому $ suffix может быть чем-то вроде: включает НДС в размере $ TAXVALUE … шедевром было бы: включает НДС в размере TAXVALUE, рассчитанный для СТРАНЫ с ГЕОГРАФИЧЕСКИМ местоположением
2. забавная вещь: когда я выбираю Венгрию или Италию в поле страна на странице оформления заказа, отображается: оценено для Венгрии / Италии… для других стран ЕС, таких как Германия и т.д., отображается только с учетом НДС, а не в строке «расчетный для страны»… странно … кто-нибудь может это подтвердить? все еще очень интересно, как получить текст с НДС в размере xy долларов США перед общей суммой / ценой! решение, приведенное выше, на самом деле не исправляет это.
Ответ №2:
Чтобы изменить сообщение «включает НДС, оцененный для [страны]» на странице оформления заказа WooCommerce, вы можете использовать фильтр woocommerce_cart_totals_shipping_html.
Вот пример того, как изменить сообщение:
add_filter( 'woocommerce_cart_totals_shipping_html', 'custom_checkout_vat_message' );
function custom_checkout_vat_message( $shipping_html ) {
// Get the customer's country
$customer_country = WC()->customer->get_shipping_country();
// Get the tax rate for the customer's country
$tax_rate = WC_Tax::get_rates( $customer_country )[1]['rate'];
// Calculate the VAT amount
$vat_amount = WC()->cart->shipping_total * $tax_rate / 100;
// Format the VAT amount as a price
$formatted_vat = wc_price( $vat_amount );
// Replace the message with your custom message
$new_message = 'Price includes VAT of ' . $formatted_vat . ' for ' . $customer_country;
$shipping_html = str_replace( 'includes ' . wc_price( WC()->cart->get_shipping_tax() ) . ' VAT estimated for ' . $customer_country, $new_message, $shipping_html );
return $shipping_html;
}
В этом примере мы используем метод WC_Tax::get_rates (), чтобы получить ставку налога для страны клиента, а затем вычисляем сумму НДС на основе общей стоимости доставки в корзине. Затем мы используем wc_price () для форматирования суммы НДС в качестве цены и заменяем исходное сообщение нашим пользовательским сообщением с помощью str_replace().