Всем привет. Первый раз на этом форуме, решил создать тему так как искал много где и не нашел решения.
В общем в магазине есть вариации товара, смысл в том, чтобы возле цены в скобках писать стоимость товара в другой валюте.
Нашел решение для цены простого товара, но оно не работает для вариаций. Поискав немного нашел и для вариаций, но он конвертирует только постоянную цену, а цену при выборе самих вариаций оставляет как есть. Плюс функция которая показывает другую валюту у обычных товаров показывает ее абсолютно везде, функция же вариаций только на странице товара.
В общем наглядно, как есть сейчас
Как хочется сделать
Код на вывод валюты возле цены обычного товара
Напомню, он мне нравится тем, что выводит валюту возле цены абсолютно везде, но не работает в вариационных товарах.
Код на вывод валюты возле основной цены вариационного товара
Он отображает валюту возле основной цены вариационного товара, но не работает с самими вариациями, плюс показывает валюту только на странице товара.
Можно как-то подправить одну из функций чтобы было как на последнем скрине выше и валюту показывало везде в том числе в корзине?
В общем в магазине есть вариации товара, смысл в том, чтобы возле цены в скобках писать стоимость товара в другой валюте.
Нашел решение для цены простого товара, но оно не работает для вариаций. Поискав немного нашел и для вариаций, но он конвертирует только постоянную цену, а цену при выборе самих вариаций оставляет как есть. Плюс функция которая показывает другую валюту у обычных товаров показывает ее абсолютно везде, функция же вариаций только на странице товара.
В общем наглядно, как есть сейчас
Как хочется сделать
Код на вывод валюты возле цены обычного товара
Код:
//WooHelp.ru
//WooCommerce 3.5.3
//Вывод двух цен товара
$price_us_int = intval(preg_replace('/[^0-9]+/', '', $price), 10);
function convert_idr_to_usd_cart( $price ){
$convertion_rate = 70; // Здесь задаем курс пересчета валюты
$new_price = $price / $convertion_rate; // Деление цены на курс, для умножения замените / на *
return number_format($new_price, 0, '.', ''); //Количество символов цены после запятой
}
add_filter( 'wc_price', 'my_custom_price_format', 10, 3 );
function my_custom_price_format( $formatted_price, $price, $args ) {
$price_usd = convert_idr_to_usd_cart($price);
$currency = 'USD'; //Валюта
$currency_symbol = get_woocommerce_currency_symbol( $currency );
$price_usd = $currency_symbol.$price_usd; // adding currency symbol
$formatted_price_usd = "<span class='price-usd'> (USD $price_usd)</span>"; //Как выводим цену
return $formatted_price . $formatted_price_usd;
}
Напомню, он мне нравится тем, что выводит валюту возле цены абсолютно везде, но не работает в вариационных товарах.
Код на вывод валюты возле основной цены вариационного товара
Код:
<?php
// Используем формат цены вариативного товара WC 2.0
add_filter( 'woocommerce_variable_sale_price_html', 'wc_wc20_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );
function wc_wc20_variation_price_format( $price, $product ) {
$currency_usd = get_option('currency_usd');
// Основная цена
$prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
$currency = $prices[0]/$currency_usd;
$price = $prices[0] !== $prices[1] ? sprintf( __( 'От: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
// Цена со скидкой
$prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
sort( $prices );
$saleprice = $prices[0] !== $prices[1] ? sprintf( __( 'От: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
$currency_sale = $prices[0]/$currency_usd;
if ( $price !== $saleprice ) {
$price = '<del>' . $saleprice .' ('.round($currency_sale).' $)'. '</del> <ins>' . $price .' ('.round($currency).' $)'.'</ins>';
}
else{
$price .= ' ('.round($currency).' $)';
}
return $price;
}
?>
Он отображает валюту возле основной цены вариационного товара, но не работает с самими вариациями, плюс показывает валюту только на странице товара.
Можно как-то подправить одну из функций чтобы было как на последнем скрине выше и валюту показывало везде в том числе в корзине?