یکی از مشکلاتی که معمولا مدیران سایتها با ووکامرس دارند این است که هنگامی که محصول متغیری را در سایت تعریف میکنند، با توجه به اینکه آن محصول بر حسب ویژگیها (attributes) و آپشنهای متغیر نظیر سایز، نوع، رنگ و … که دارد، میتواند بواسطه تنوع ویژگیها، قیمتهای متفاوتی داشته باشد و در قسمت صفحه محصول سایت و همچنین باکس محصول آن 2 قیمت به صورت (کمترین قیمت محصول – بیشترین قیمت محصول) نشان میدهد که این نوع نمایش معمولا باعث سردرگمی خریدار و انصراف او از خرید میشود.
بسیاری از مدیران سایت های فروشگاهی ترجیح میدهند که اگر محصول متغیر آنها بر حسب ویژگی های مختلفش، چندین قیمت متفاوت دارد، مشتریها و کاربران در نگاه اول در صفحه فروشگاه و یا صفحه محصول و… ابتدا با کمترین قیمت محصول مواجه شوند و سپس بعد از انتخاب اولیه محصول و رفتن به صفحه محصول و انتخاب ویژگی مورد نظر از محصول، با قیمت نهایی محصول روبرو شوند.
با یک مثال ساده این موضوع را برای شما آشکارتر میسازم. فرض کنید شما در سایت خودتان یک گوشی میفروشید که دارای 3 رنگ مختلف است و هر رنگ از این گوشی برای خودش قیمت متفاوتی دارد. شما برای این که در سایت خودتان 3 تا صفحه محصول جداگانه برای هر رنگ از این محصول ایجاد نکنید از قابلیت محصول متغیر ووکامرس استفاده میکنید. این قابلیت به شما این اجازه را میدهد که برای این محصول که دارای یک ویژگی متغیر به نام رنگ است و این ویژگی دارای 3 نوع متفاوت با قیمت های متفاوت است یک صفحه محصول واحد داشته باشید و به کاربر اجازه دهید که در آن صفحه رنگ مورد نظر گوشی را انتخاب و در نهایت قیمت آن گوشی با آن رنگ خاص را مشاهده کند.
اما هنگامی که این محصول متغیر را در سایت خود تعریف میکنید، در باکس محصول و صفحه محصول و فروشگاه قیمت این محصول متغیر بصورت دوگانه (کمینه قیمت – بیشینه قیمت) نمایش داده میشود. که شاید این گونه نمایش مطلوب شما و اهداف مارکتینگی شما نباشد.
ما در این مقاله به دو روش به شما آموزش میدهیم که چگونه فقط کمترین قیمت محصول متغیر را در ووکامرس نمایش دهید:
1. نمایش کمترین قیمت محصول متغییر در ووکامرس با کد PHP
برای نشان دادن پایینترین قیمت محصول متغیر خود در سایت، تنها کافی است که کد PHP زیر را کپی کرده و در سند functions.php قالبتان (یا اگر از چایلد تم استفاده میکنید در سند functions.php چایلد تم قالب سایتتان) قرار دهید تا این تغییر بر روی تمامی محصولات متغیر شما و در تمامی بخش های سایت از جمله باکس محصول، صفحه محصول، صفحات فروشگاه و آرشیو محصولات و غیره اعمال شود.
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 ) {
// Main Price
$prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
$price = $prices[0] !== $prices[1] ? sprintf( __( '%1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
// Sale Price
$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] );
if ( $price !== $saleprice ) {
$price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>';
}
return $price;
}
اگر تمایل دارید که به جای نمایش کمترین قیمت محصول متغیر، قیمت محصول متغیر بصورت “شروع قیمت از” به کاربر در باکس محصول، صفحه محصول و صفحات فروشگاه و آرشیو محصولات نمایش داده شود از این کد PHP استفاده نمایید :
add_filter( 'woocommerce_variable_sale_price_html', 'custom_variable_price_range', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'custom_variable_price_range', 10, 2 );
function custom_variable_price_range( $price_html, $product ) {
$prefix = __('شروع قیمت از', 'show-only-lowest-prices-in-woocommerce-variable-products');
$min_price = $product->get_variation_price( 'min', true );
$suffix = $product->get_price_suffix( $price = '', $qty = 1 );
/* If all variations have same price not display prefix */
$max_price = $product->get_variation_price( 'max', true );
if( $min_price == $max_price )
return wc_price( $min_price ) . $suffix;
return $prefix . ' ' . wc_price( $min_price ) . $suffix;
}
ویژگی کد اخیر این است که اگر ویژگی های محصول متغیر شما همگی هم قیمت باشند، دیگر عبارت “شروع قیمت از” را نمایش نمیدهد.
2. نمایش پایینترین قیمت محصول متغییر در ووکامرس با افزونه
برای نمایش کمترین قیمت محصول متغیر در ووکامرس میتوانید به جای استفاده از کد، از افزونه استفاده کنید. برای این کار بهترین افزونه حال حاضر که به رایگان در مخزن وردپرس وجود دارد، افزونه Variation Price Display Range for WooCommerce است. این افزونه دارای کدنویسی بسیار تمیز و بهینه است و همواره ورژن جدید آن با آخرین نسخه وردپرس و ووکامرس هماهنگ و سازگار میشود.

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

سلام وقتتون بخیر
بطورکلی قیمت محصول متغیر تو ووکامرس صفر در نظر گرفته میشه
وقتی سورت محصولات رو براساس قیمت (از کم به زیاد) میذاریم بجای اینکه از کمترین قیمت شروع بشه از محصولات متغیر شروع میشه لیست. این کد شما به این قضیه هم کمکی میکنه؟
سلام
اوقات شما هم به کام
خیر، چنین چیزی درست نیست، قیمت محصولات متغیر ووکامرس بدرستی درک و با سایر قیمت محصولات ساده مقایسه میشود. من الان برای این که مطمعن بشم از این موضوع چند محصول ساده و متغیر با قیمت های مختلف ایجاد کردم و سپس از فیلتر محصولات (فیلتر ذاتی صفحه فروشگاه ووکامرس) اونها رو بر حسب کمترین و بیشترین قیمت سورت کردم و هیچ مشکلی ندیدم. یعنی ووکامرس بدرستی محصولات رو بر حسب قیمت کمینه به بیشینه و بلعکس سورت کرد (حتی محصولات متغیر رو) و بترتیب قیمت صحیح اونها رو نشون داد. حتی بعد از این که چه با کد و چه با افزونه کمترین قیمت محصولات متغیر رو در سایت نشون دادم، باز هم اونها رو به درستی سورت میکرد. پس اساسا این مورد که گفتین “بطورکلی قیمت محصول متغیر تو ووکامرس صفر در نظر گرفته میشه” بطور کامل رد میشه و اگر چنین مشکلی دارین باید قالب و تنظیمات صفحات آرشیو محصولات و فروشگاه و یا افزونه هایی که میتونن روی فیلتر محصولات تاثیر بذارن رو بررسی کنید.
خیلی عالی بود ، ممنون
یک توضیح ابتدایی دربارش میدید با سپاس
خواهش میکنم
بطور کلی با استفاده از این کد و بدون نیاز به افزونه میتونین قیمت دوگانه (بیشترین و کمترین قیمت یک محصول متغیر ووکامرس) که توی باکس محصول یا صفحه آرشیو محصولات یا خود صفحه محصول به کاربر نشون داده میشه رو به یک قیمت یگانه و واحد که کمترین قیمت محصول متغیرتون هست، تغییر بدین و فقط همون کمترین قیمت رو فقط نشون میده.
سلام… تو نسخه موبایل اما هنوز بازه قیمتی رو نشون می ده. اون رو چه جوری اصلاح کنیم که تک قیمت (کمترین) نمایش داده بشه…؟
سلام
بطور کلی این کد هم بر روی قیمت مندرج در صفحه محصول هم قیمت باکس محصول در کاتالوگ (صفحه اصلی – صفحه فروشگاه – آرشیو محصولات همچون صفحه دسته بندی و برچسب و …) تاثیر میگذارد.
اگر کد بر روی قسمتی از موارد اشاره شده در بالا تاثیر نمیگذارد و همچنان بصورت دوقیمتی یا بازه قیمتی نمایش داده میشود باید کد نویسی قالبتون رو بازنگری کنید.
خدا خیرتون بده من خیلی اذیت شدم سر این داستان و نزدیک بود 40 دلار هم پول افزونه پریمیوم بدم
دمتون گرم
مشتی هستید و پر طرفدار
سلامت باشید
خوشحالم به دردتون خورده و کارآمد بوده
بطور کلی اینو بدونین که خیلی از کارا توی وردپرس الزاما نیاز به افزونه نداره و با یک قطعه کد مساله حل میشه.
سلام وقت بخیر، function.php قالب من رمزگزاری شده و به محض تغییر سایت بالا نمیاد. راه حلی دیگه ای نداره برای اعمال این کد؟؟
بطور کلی نباید به این شکل باشه و شما باید بتونین به فایل فانکشن قالبتون دسترسی داشته باشین اما میتونین برای قالبتون پوسته بچه (child theme) ایجاد کنین و کد رو داخل فایل فانکشن پوسته بچتون قرار بدین.
همچنین میتونین از افزونه Code Snippets که هم نسخه رایگان در مخزن وردپرس داره و نسخه پولی، برای گذاشتن این کد php داخل سایتتون استفاده کنید.
سلام من این کد را با افزونه code snippets در قسمت php قرار دادم اما در سایتم تغییری ایجاد نمی شود. حتی بصورت دستی در فایل فانکشن هاست قرار دادم باز تغییری ایجاد نشد. ممنون میشم راهنمایی کنید.
این کد به لحاظ عملکردی و صحت مشکلی نداره و روی سایت ما و همچنین دوستانی که اینجا کامنت گذاشتن جواب داده، باید نحوه وارد کردن کد و یا مشکلی که میتونه از جانب قالبتون و پشتیبانی از نمایش قیمت محصول متغیر یا مشکلات دیگه رو بررسی کنید.
درود بر شما وقت بخیر
من میخواهم در برگه محصول، هر دو قیمت کمترین و بیشترین نمایش داده شود.پکار باید بکنم؟
الان کمترین قیمت نمایش داده می شود.
ممنون از شما و راهنمایی ارزشمندتان
سلام
اوقات شما هم به کام
اگر شما با استفاده از کد معرفی شده در این مقاله کمترین قیمت محصول متغیر خود را در سایت نمایش میدهید، میتوانید با پاک کردن همین کد که در فایل فانکشن قالب خود قرار دادهاید، مجددا هر دو قیمت کمترین و بیشترین در باکس محصول و صفحه محصول نمایش داده خواهد شد.
البته باید این نکته رو متذکر بشم که نمایش یا عدم نمایش هر دو قیمت کمترین و بیشترین به قالب (پوسته) سایت شما وابسته است.
آقا عالی بود، بدون دردسر…
شکرخدا
خوشحالم که این مطلب تونست بهتون کمک کنه و خیلی زود و سریع مشکل و خواستتون رو برطرف کنه
پاینده باشید
سلام
تشکر از شما
عالی بود
سلام دوست عزیز، خوشحالم که براتون مفید بوده، ممنونم که نظرتون رو با ما به اشتراک گذاشتید، این کار شما به من فوق العاده انرژی میده