قیمت ها در ووکامرس شرایط مختلفی دارند و می توانیم توسط کدها و افزونه های مختلف و حتی تنظیمات ووکامرس یا قالب، نحوه نمایشی آنها را تغییر دهیم. در برخی از فروشگاه های ووکامرسی که قیمت محصولات عموما مبالغ بزرگی است و مبالغ به ریال یا تومان وارد می شوند، تعداد رقم های قیمت می تواند باعث بهم ریختگی حالت نمایشی صفحات گردد. برخی از وبمستران با تغییر اندازه محل قرارگیری قیمت ها یا تغییر اندازه متن قیمت این مشکل را رفع می کنند اما یکی از راه های جذاب برای حل این مشکل، تبدیل مبالغ بزرگ مثلا 351,452,000 تومان به 351.452 میلیون تومان است! در این تاپیک از انجمن بی تاک با ما همراه باشید تا نحوه انجام این کار را برایتان شرح دهیم.

ویرایش کدهای فرعی قالب
در این راه حل، شما باید کدهای قالب را ویرایش کنید. باید فایل مربوط به ادامه محصول تکی را پیدا کنید و کدی که برای نمایش قیمت داخل قالب قرار داده شده است را پیدا کنید و آن را با این کد جایگزین کنید:
<?php
function betalk_nice_number($n) {
$_product = wc_get_product( $product_id );
$n = $_product->get_price();
$n = (0+str_replace(",", "", $n));
if (!is_numeric($n)) return false;
if ($n > 1000000000) return round(($n/1000000000), 3).' میلیارد تومان';
elseif ($n > 1000000) return round(($n/1000000), 3).' میلیون تومان';
elseif ($n > 1000) return round(($n/1000), 2).' هزار تومان';
return number_format($n);
}
echo betalk_nice_number('$n');
?>
کد بالا، ابتدا قیمت محصول را دریافت کرده، از چندین فیلتر عبور می دهد و سپس بر اساس مقایسه عدد، کار تبدیل و گرد کردن قیمت را انجام میدهد و به همراه واحد پولی داخل سایت شما نمایش خواهد داد.
پیشنهاد ما به شما انجام این روش است چرا که در فاکتورها و صفحه سبدخرید و … اعداد و ارقام شما دچار اشکال نخواهد شد. این راه حل را هم صرفا در مکانی انجام دهید که واقعا نیاز است!
روش تغییرات سراسری با فایل functions.php
روش بعدی، استفاده از functions.php
قالب است. اگر در روش قبلی نتوانستید محل کد قیمت محصولات در قالب را پیدا کنید، پیشنهاد ما به شما این روش است.
add_filter( 'woocommerce_get_price_html', 'betalk_nice_number', 20, 2 );
function betalk_nice_number() {
if( is_product() ) {
$_product = wc_get_product( $product_id );
$n = $_product->get_price();
$n = (0+str_replace(",", "", $n));
if (!is_numeric($n)) return false;
if ($n > 1000000000) return round(($n/1000000000), 3).' میلیارد تومان';
elseif ($n > 1000000) return round(($n/1000000), 3).' میلیون تومان';
elseif ($n > 1000) return round(($n/1000), 2).' هزار تومان';
return number_format($n);
echo betalk_nice_number('$n');
}
}
کد بالا تنها در صفحه محصول تکی اعمال خواهد شد و قیمت را به صورت دلخواه شما و طبق الگوی جدید تغییر خواهد داد. شما می توانید کد بالا را ویرایش کرده و آن را طبق نیاز خود گسترش دهید.