نمایش قیمت محصولات به میلیون تومان در ووکامرس

5 / 5. تعداد رای: 3

نمایش قیمت محصولات به میلیون تومان در ووکامرس

شاید محصولاتی داشته باشید که قیمتی بالاتر از یک میلیون تومان دارند و با نمایش دادن یک محصول ۱۲ میلیون تومانی به‌صورت ۱۲۰۰۰۰۰۰ تومان احتمالا کاربر از سایت شما فرار خواهد کرد. در این مقاله قصد داریم با چند خط کد ساده ۱۲۰۰۰۰۰۰ تومان را به‌صورت ۱۲ میلیون تومان نمایش دهیم. 🙂 با نمایش قیمت محصولات به میلیون تومان در ووکامرس حس بهتری به بازدید کننده سایت شما منتقل خواهد شد.

نمایش قیمت محصولات به میلیون تومان در ووکامرس

زمانی که شما این کار را انجام دهید می‌توانید حس بهتری را در کاربر ایجاد کنید و همچنین کاربر شما ازنظر بازاریابی عصبی راحت‌تر می‌تواند خرید خود را انجام دهد. خب در اینجا در قسمت محصولات دوتا محصول تحت عنوان تبلت داریم. قیمت یکی از این تبلت‌ها 9 میلیون تومان و قیمت دیگری 900 هزار تومان است.

ما قصد داریم قیمت این دو محصول را باهم بررسی کنیم. بعدازاینکه کارمان را انجام دادیم قیمت محصول اول باید 9 میلیون تومان و قیمت محصول دوم تغییری نکند.

Initial price of tablet
قیمت محصول میلیون تومانی
قیمت ابتدایی تبلت
قیمت محصول کمتر از یک میلیون تومان

آموزش تبدیل قیمت به میلیون در ووکامرس

برای اینکه بتوانید این کار را انجام دهید باید از اتم استفاده کنید. بنابراین ctrl+shf+o را کلیک و پوشه قالب خود را بازکنید. سپس از مسیر Themes > wp-content < پوشه قالب < Functions را بازکنید.

شما می‌توانید در فایل Functions خود توابع خود را وارد کنید و اینکه شما از چه قالبی استفاده می‌کنید در اینجا اهمیتی ندارد. شما می‌توانید از ابتدای قالب خود شروع به نوشتن کد کنید.

اولین کاری که باید انجام دهید این است که یک فیلتر جدید در ووکامرس اضافه کنید. برای این کار دستور زیر را باید وارد کنید:


add_filter('raw_woocommerce_price','mihanwpmilionprice');

این کار نمایش قیمت ووکامرس را طبق تابع جدیدی که ما در اینجا می‌‌‌‌‌سازیم برای ما مرتب می‌‌‌‌‌کند. اکنون تابعی که برای این کار مشخص کرده‌‌‌‌‌ایم را می‌‌‌‌‌نویسیم:

}(function mihanwpmilionprice($price)

اکنون باید این تابع را به شکل زیر شرطی کنیم:

if(is_single()){
  if(floatval($price) >= 999999){
    $price = $price / 1000000;
    return $price;
  }
  }
  return $price;
}

طبق تابع بالا شما مشخص می‌کنید که اگر قیمت محصول از 999999 بیشتر شد آن را تقسیم‌بر 1000000 کند. به‌عنوان‌مثال در اینجا 9 میلیون تومان تقسیم‌بر 1 میلیون تومان شده و 9 به‌دست می‌آید. همچنین مشخص می‌کنیم اگر هم قیمت بالاتر از این مقدار نباشد همان قیمت قبل را نشان بدهد. زمانی که تا این مرحله پیش رفتید ذخیره را انجام دهید.

همان‌‌‌‌‌طور که در تصاویر زیر مشاهده می‌‌‌‌‌کنید قیمت محصول 9000000 تومانی تغییر کرده است.

تغییر قیمت محصول
تغییر قیمت محصول

نمایش قیمت بصورت میلیون تومان در ووکامرس

حال برای اینکه 9 تومان را تبدیل به 9 میلیون تومان کنیم یک فیلتر جدید دیگر اضافه می‌‌‌‌‌کنیم:


add_filter('woocommerce_currency_symbol','mihanwpmilionsymbol');

در اینجا سمبل قیمت ووکامرس را تعیین کردیم. سپس Functions را اضافه می‌‌‌‌‌کنیم:

}(function mihanwpmilionsymbol($symbol)

در تابع بالا ما باید یک مقداری را برگردانیم که سمبل قیمت ما است. سپس Functions را بازکرده و شروع می‌کنیم. کاری که در اینجا باید بکنیم این است که قبل از هر چیزی قیمت محصول را بگیریم و بر اساس قیمت سمبل قیمت را از تومان تبدیل به میلیون تومان کنیم.

if(is_single()){
  $product = new WC_Product(get_the_ID());
  $productprice = $product->get_price();
  if(strlen($productprice) >= 7){
    return 'میلیون تومان';
  }
  }
  return 'تومان';
}

در اینجا مشخص کردیم که اگر طول قیمت 7 یا بیشتر از 7 باشد، سمبل قیمت را به میلیون تومان تبدیل کند و در غیر این صورت تومان را نمایش دهد. البته اگر شما از “هزار تومان” استفاده می‌کنید “تومان” را تبدیل به “هزار تومان” کنید و عدد 4 را جایگزین 7 کنید. همچنین در قطعه کد بالا باید به‌جای تقسیم‌بر 1 میلیون تقسیم‌بر هزار شود و 999999 تبدیل به 999 شود.

رفع خطای سفید در صفحه سبد خرید

خب تا اینجا ما توانستیم قیمت‌ها را به‌درستی تغییر دهیم. اما مسئله‌ای که در اینجا وجود دارد این است که وقتی محصولات را به سبد خرید اضافه می‌کنیم و به صفحه سبد خرید مراجعه می‌کنیم، این صفحه سفید می‌شود. این موضوع یعنی اینکه به ما ارور داده می‌شود و یک مقدار را به‌صورت نادرست برای ما نشان می‌دهد.

ارور صفحه سفید
ارور صفحه سفید

خب برای اینکه این مشکل را برطرف کنیم باید قبل از کدنویسی در قطعه کدهای 3 و 6 کد زیر را وارد کنید.

if(is_single()){

اما ما برای راحتی کار شما کد را در همان ابتدا قرار داده‌‌‌‌‌ایم و نیاز به وارد کردن مجدد نیست.

همان‌‌‌‌‌طور که مشاهده می‌‌‌‌‌کنید قیمت محصول به 9 میلیون تومان تبدیل شده است.

قیمت نهایی محصول
قیمت نهایی محصول

پس کل کدهایی که باید در قالب سایت خود اضافه کنید این‌هاست:

add_filter('raw_woocommerce_price','mihanwpmilionprice');
function mihanwpmilionprice($price){
  if(is_single()){
  if(floatval($price) >= 999999){
    $price = $price / 1000000;
    return $price;
  }
  }
  return $price;
}
add_filter('woocommerce_currency_symbol','mihanwpmilionsymbol');

function mihanwpmilionsymbol($symbol){
  if(is_single()){
  $product = new WC_Product(get_the_ID());
  $productprice = $product->get_price();
  if(strlen($productprice) >= 7){
    return 'میلیون تومان';
  }
  }
  return 'تومان';
}

موفق باشید. 🙂

نظر شما در این مورد چیه؟

  1. U336956 ۲۴ دی ۱۴۰۲

    سلام و خسته نباشید خدمت شما
    من محصولاتم به صورت پک 5 عددی و 6 عددی هست
    در نظر دارم قیمت نمایشی رو در صفحه محصول به صورت تک نمایش بده به مشتری یعنی قیمت پک رو تقسیم بر 5 یا 6 بکنه

    • Reza Rad رضا راد ۲۴ دی ۱۴۰۲

      سلام راهی نداره مگر اینکه قیمت هر محصول رو بزنید یا توی توضیحات کوتاه بنویسید این قیمت به ازای هر عدد

  2. U41536 ۱۵ مهر ۱۴۰۲

    سلام این کدی ک نوشتین در صورت دادن تخفیف به مشکل میخوره و باید get_regular_price() و get_sale_price() به توابع اضافه بشه

    • Reza Rad رضا راد ۱۵ مهر ۱۴۰۲
      • U41536 ۱۵ مهر ۱۴۰۲

        add_filter(‘raw_woocommerce_price’, ‘chiacodeprice’);
        function chiacodeprice($price){
        if(is_single()){
        if (floatval($price) >= 999999) {
        $price = floor($price / 1000000);
        return $price;
        } elseif (floatval($price) >= 999) {
        $price = floor($price / 1000);
        return $price;
        }
        }
        return $price;
        }
        function milionkhorde($price){
        if ($price >= 999999) {
        $price = $price % 1000000;
        $price = $price / 1000;
        return $price;
        } else
        return $price;
        }
        add_filter(‘woocommerce_currency_symbol’, ‘chiacodesymbol’);
        function chiacodesymbol($symbol){
        if(is_single()){
        $product = new WC_Product(get_the_ID());
        $productprice = $product->get_price();
        if (strlen($productprice) >= 7) {
        return ‘ ‘.’میلیون’ . ‘ ‘ . ‘و’ .’ ‘. milionkhorde($productprice) .’ ‘.’هزار تومان’;
        } elseif (strlen($productprice) >= 4) {
        return ‘هزار تومان’;
        }
        }
        return ‘تومان’;
        }

        ////////////////
        من این کد و نوشتم اما نمیدونم این دوتا رو چجوری به این توابع اضافه کنم

  3. U16495 ۱۹ اسفند ۱۴۰۱

    سلام وقت بخیر جناب حسینی ما هنوز مونده به شما برسیم که خدای کدنویسی بشیم لطفا مطلب رو آپدیت کنید ۲ ساله منتظریم تو مطلب کد کامل رو بذارید که کل سایت به میلیون تومان نمایش بده و همچنین مجموع سبد خرید اگه به میلیون رسید نمایش بده مثل ۲ جنس ۵۰۰ هزار تومانی باتشکر

  4. U313487 ۶ آبان ۱۴۰۱

    سلام وقت بخیر
    نکته اول اینکه بر وز رسانی محتوا برای صفحات فروشگاهی رو هم انجام بدین لطفا
    و نکته دوم اینکه نمیدونم برای شما هم همینطوره یا خیر ولی موقع ویرایش صفحه Chekout با المنتور و قالب هلو المنتور یه خطا میده ، هرچند برگه رو درست نمایش میده

  5. U314417 ۲۴ مهر ۱۴۰۱

    سلام و درود من از قالب هلو المنتور استفاده میکنم ویدیو رو دیدم از این کد استفاده کردم و مشکل هم حل شد و کد هم به درستی کار میکنه ولی فقط در صفحه محصول واحد اعمال شده و در صفحه فروشگاه اعمال نشده. چطور باید کاری کرد در صفحه فروشگاه اعمال بشه؟

  6. U38828 ۲۱ تیر ۱۴۰۱

    سلام، سپاس از آموزش بسیار مفیدتون. یک سوال: در برگه فروشگاه این تغییرات اعمال نمیشه و فقط در صفحه محصول این تغییرات اعمال میشه! چه قطعه کد دیگه‌ای نیاز اضافه یا پاک بشه تا داخل کل سایت این تغییر اضافه بشه؟ ممنون میشم راهنمایی کنید

  7. U36368 ۲۸ خرداد ۱۴۰۰

    با سلام میخوام تومان قبل از قیمت بیاد الان بعد از قیمت اومده این رو چطور میتونم تغییر بدم؟

    • Reza Rad رضا راد ۲۸ خرداد ۱۴۰۰

      درود بر شما توی تنظیمات ووکامرس میتونید موقعیت رو بذارید روی راست با فاصله

  8. U38691 ۲۸ فروردین ۱۴۰۰

    سلام من این کار هارو انجام دادم وقتی وارد سبد خریدم میشیم هزار تومن مینویسه ولی وقتی توی فروشگاه نمایش میده به صورت تومان نمایش میده چیکار کنم ممنون از کمکتون

  9. U8522 ۱۸ آذر ۱۳۹۹

    من قیمت از هزار تومان استفاده میکنم وقتی مشتری مثلا 4 کالای 500 هزار تومانی سفارش میده در فاکتور قیمت نهایی به جای 2 میلیون تومان 2000 هزار تومان نشان داده میشود این مشکل چه طور حل کنم؟

    • تیم پشتیبانی تیم پشتیبانی ۱۹ آذر ۱۳۹۹

      با سلام
      باید کد را اصلاح کنید و برای بیشتر از ۷ کاراکتر شد میلیون رو نمایش بده

      • U8522 ۲۰ آذر ۱۳۹۹

        ممنون از جوابتون منظور منو متوجه نشدید من واحد پولی روی هزار تومان تنظیم شده و کد برای بیشتر از 4 کاراکتر شد میلیون رو نمایش بده ولی وقتی 4 تا جنس 500 هزار تومانی خرید بکنه تو فاکتور مینویسه 2000 هزارتومان در صورتی که باید بنویسه 2 میلیون تومان . برای رفع این مشکل چی کار کنم ؟؟؟
        و با اینکه هزار تومان تعریف شده در بعضی از صفحات سمبول قیمت تومان نشان میده .یه راهنمایی بفرمایید ممنون میشم

        • تیم پشتیبانی تیم پشتیبانی ۲۰ آذر ۱۳۹۹

          با سلام
          بله متوجه هستیم. شما باید در همان کد تعریف کنید که اگر قیمت بیشتر از ۷ رقم شد یعنی به میلیون تومان تبدیل شد به صورت میلیون تومان نمایش داده شود

  10. U8522 ۱۸ آذر ۱۳۹۹

    سلام وقت بخیر با ارزو موفقیت برای شما میخواید شماره بخش تولید محتوارو بدید ما زنگ بزنیم ازشون خواهش کنیم بزارن ؟

  11. U11752 ۱۰ آذر ۱۳۹۹

    سلام در اپدیت جدید اینکه اعداد اعشار رو دقیق نشون میده رو مشکلشو برطرف نکردین یعنی محصول 2800000تومان با کد شما تبدیل به 3میلیون تومان میشه در صورتی که باید 2.8میلیون تومان نمایش داده بشه و مبالغ کمتر از 2500000تومان رو 2میلیون تومان نمایش میده و مسئله ی بعدی در صفحه ی فروشگاه این تغییر واحد پول انجام نمیشه و همون قیمت 2800000به این صورت نمایش داده میشه و واحد میلیون تومان اعمال نمیشه.

  12. U20377 ۹ فروردین ۱۳۹۹

    سلام
    من میخوام قیمت های محصولاتم در ووکامرس کلا بدون صفر نشودن داده بشن
    مثلا اگر قیمت یک محصول (30000 تومانه) بشه (30 هزار تومان)
    با اعشار های ووکامرس هم مشکلی حل نشد.باید با فیلتر ها این کارو کرد فکر کنم
    بعضی از سایت ها رو دیدم این کارو کردن اما نتونستم راه حلشو پیدا کنم
    ممنون میشم راهنمایی کنی میهن وردپرس

    • تیم پشتیبانی تیم پشتیبانی ۹ فروردین ۱۳۹۹

      با سلام
      باید با کدنویسی این کار را انجام دهید

      • U20377 ۹ فروردین ۱۳۹۹

        بقیه دوستان سوال کردن براشون ویدئو ساختید اونوقت بنده سوال میکنم میگید باید کد نویسی شه
        جناب اقای حسینی راد ما پایه ثابت میهن وردپرسیم و یه سوال کردیم که برای شما پاسخ دادنش اسونه
        لطفا پاسخ بدید اگر هم به این مطلب اضافش کنید ازتون ممنون میشم

        • تیم پشتیبانی تیم پشتیبانی ۹ فروردین ۱۳۹۹

          https://mihanwp.com/woocommerce-million/
          برای هزار تومان ووکامرس فارسی نصب کنید

          واحد هزار تومان اضافه میکنه

          • U20377 ۹ فروردین ۱۳۹۹

            مرسی از پاسختون اما هزار تومان رو با کد بالا انجام دادم و اضافه میشه مشکلی نداره
            فقط کد بالا برای میلیون هست اگر امکانش باشه برای زیر میلیون هم اعشار ها حذف بشه عالی میشه.
            لطفا این قسمت که فکر کنم تو کد بالا فقط به تقسیمه سادستو قرار بدید تا بنده و همگان استفاده کنند.
            مرسی

            • تیم پشتیبانی تیم پشتیبانی ۹ فروردین ۱۳۹۹

              اگر میخواهید اعشار رو حذف کنید توی تنظیمات ووکامرس گزینه تعداد رقمهای اعشار رو برابر با صفر قرار بدید

              • U20377 ۱۰ فروردین ۱۳۹۹

                ببخشید ولی انگار متوجه منظور من نشدید
                اگر روی 0 باشه قیمت رو اینطوری نشون میده و درست هم هست :
                69.000 تومان

                من میخوام اینطوری شه :
                69 هزار تومان
                یا
                69 تومان
                فرقی نداره
                دقیقا مثل سایت خودتون میهن وردپرس ببینید.
                لطفا کمکم کنید من خیلی به این کد نیاز دارم.
                متشکرم

                • تیم پشتیبانی تیم پشتیبانی ۱۰ فروردین ۱۳۹۹

                  شما باید از پسوند هزار تومان استفاده کنید. با استفاده از افزونه ووکامرس فارسی. سپس تمام قیمتها را بدون ۰۰۰ وارد کنید

  13. کاربر مهمان ۲۸ اسفند ۱۳۹۸

    سلام
    روزتون بخیر.ممنون بابت پست مفیدتون
    در مورد رند کردن اعداد و عدم نمایش توی صفحه فروشگاه کی این مقاله آپدیت میشه؟

  14. U11538 ۲۵ اسفند ۱۳۹۸

    سلام الان مثل سایت خودتون بخایم ب هزارتومن بزنیم چیکار کنیم؟

  15. کاربر مهمان ۱۸ اسفند ۱۳۹۸
  16. کاربر مهمان ۱۸ اسفند ۱۳۹۸

    در برگه فروشگاه این تغییرات اعمال نمیشه و فقط در صفحه محصول این تغییرات اعمال میشه و یک ایراد دیگه اینه که مبلغ 2400000 رو رند نمایش میده و میزنه 2میلیون تومان یا 2800000رو میزنه 3میلیون تومان و اعشارشو نمایش نمیده یعنی بزنه 2.4میلیون تومان یا 2.8میلیون تومان و قیمتارو به بالا یا به پایین گرد میکنه

  17. کاربر مهمان ۱۸ اسفند ۱۳۹۸

    با سلام ممنون از آموزشتون
    این کد رو میشه به فانکشن child قالب اضافه کرد که بعد از هر اپدیت ما نیایم این کد رو اضافه کنیم؟

  18. کاربر مهمان ۱۷ اسفند ۱۳۹۸

    سلام
    لطفا کد تبدیل به هزار تومان رو هم بگید.