Я пытаюсь изменить цену на конкретный продукт c, чтобы он отображал цену с НДС (в отличие от других продуктов, где цена указана без НДС)
Мне удалось заставить это работать с самими переменными продуктами, используя следующий код из https://tomjesch.com/display-woocommerce-products-with-and-without-tax/
function edit_selected_variation_price( $data, $product, $variation ) {
if(is_singular('product') && $product->get_id() == 68719 ) {
$price = $variation->price;
$price_incl_tax = $price + round($price * ( 20 / 100 ), 2);
$price_incl_tax = number_format($price_incl_tax, 2, ",", ".");
$price = number_format($price, 2, ",", ".");
$display_price = '<span class="price">';
$display_price .= '<span class="amount">£ ' . $price_incl_tax .'<small class="woocommerce-price-suffix"> incl VAT</small></span>';
$display_price .= '</span>';
$data['price_html'] = $display_price;
}
return $data;
}
add_filter( 'woocommerce_available_variation', 'edit_selected_variation_price', 10, 3);
Это работает, когда выбран параметр. Однако до того, как вариант будет выбран, есть цена, которая гласит FROM: £ xxx, которую я теперь также хочу изменить, чтобы сказать «FROM: £ xxx in c VAT»
Однако я не могу кажется, делают что-нибудь, чтобы это изменить. Итак, я добавил следующее, чтобы настроить html по цене:
function cw_change_product_html( $price_html, $product ) {
if ( $product->get_id() == 68719 ) {
$price_incl_tax = $product->price + round($price * ( 20 / 100 ), 2);
$price_incl_tax = number_format($price_incl_tax, 2, ",", ".");
$price_html = '<span class="amount">From ' . $price_incl_tax . 'incl VAT</span>';
}
echo $price_html;
}
А затем я попытался использовать эти три разных крючка.
add_filter( 'woocommerce_get_price_html_from_to', 'cw_change_product_html', 10, 2 );
add_filter( 'woocommerce_get_price_html', 'cw_change_product_html', 10, 2 );
add_filter('woocommerce_variable_price_html', 'cw_change_product_html', 10, 2);
Кажется, только второй запускает код, но затем выводит все цены для всех различных вариантов.
Нужно ли мне использовать другой крючок или есть способ запустить приведенный выше код один раз?