JavaScript — PHP или JS? WooCommerce разделить / отформатировать десятичные знаки в две строки

Мне нужно сделать настройку WooCommerce отображение цены товара.
Мне нужно отформатировать представление, чтобы показать десятичные разряды меньше и выше знака валюты

введите описание изображения здесь

Мне действительно нужно редактировать файлы ядра? У кого-нибудь была похожая проблема?

1

Решение

Вот идея (только что проверил себя). Когда вы находитесь внутри ваших шаблонов переопределения, и вы можете получить $product->get_price_html как насчет запуска регулярного выражения для отделения числа с плавающей запятой. Затем взорвать это число в массив, используя. разделитель.

скажи, что ты в woocommerce/single-product/price.php (скопировано в тему из плагина конечно)

preg_match('!\d+(?:\.\d+)?!', $product->get_price_html(), $matches);
$price_parts = explode('.', $matches[0]);
print_r($price_parts); // for example outputs array('45', '00');

А еще лучше, вы можете просто получить исходную цену и забыть регулярное выражение. Тогда получите валюту отдельно.

$price_parts    = explode('.', $product->price);
$currency       = get_option('woocommerce_currency');
$currency_symbol= get_woocommerce_currency_symbol();

$price_html     = '<span class="price-big-number">'.$price_parts[0].'</span>';
$price_html     .='<span class="price-small-number">'.$price_parts[1].'</span>';
$price_html     .='<span class="price-currency">'.$currency.'</span>';
1

Другие решения

Вам абсолютно не нужно редактировать основные файлы.
Использовать фильтр

formatted_woocommerce_price

применить ваши изменения на всех страницах, где указана цена товара (включая «магазин», «отдельный товар», «корзина», «оформить заказ»).

Например.

function my_custom_price_format( $formatted_price, $price, $decimals, $decimal_separator, $thousand_separator ) {
$decimal_part = substr(strrchr($price, $decimal_separator), 1);
return '<span class="int-part">' . floor( $price ) . '</span>' . '<sup class="decimal-part">' . $decimal_part . '</sup>';
}
add_filter( 'formatted_woocommerce_price', 'my_custom_price_format', 20, 5 );
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector