ثبت‌نام ورود

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

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

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

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

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

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

قیمت محصول میلیون تومانی
قیمت ابتدایی تبلت
قیمت محصول کمتر از یک میلیون تومان

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

برای اینکه بتوانید این کار را انجام دهید باید از اتم استفاده کنید. بنابراین 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. U20377 ۰۹ فروردین ۱۳۹۹

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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