مشکل چیه؟
یکی از مشکلاتی که معمولا مدیران سایتها با ووکامرس دارند این است که هنگامی که محصول متغیری را در سایت تعریف میکنند، با توجه به اینکه آن محصول بر حسب آپشنهای متغیر نظیر سایز، نوع، رنگ و … که دارد در قسمت صفحه محصول سایت و همچنین باکس محصول آن 2 قیمت به صورت (کمترین قیمت محصول – بیشترین قیمت محصول) نشان میدهد که این نوع نمایش معمولا باعث سردرگمی خریدار و انصراف او از خرید میشود.
راه حل چیه؟
در قسمت پایین یک کد برای شما قرار دادهایم که با استفاده از آن این مشکل بطور کامل برطرف میشود و قیمت باکس محصول و قیمت نمایش داده شده در صفحه محصول به جای نمایش بصورت (کمترین قیمت محصول – بیشترین قیمت محصول) به صورت (کمترین قیمت محصول) نمایش داده خواهد شد.
برای اعمال این تغییر در سایت خود تنها کافی است که کد PHP زیر را کپی کرده و در سند functions.php قالبتان (یا اگر از چایلد تم استفاده میکنید در سند functions.php چایلد تم قالب سایتتان) قرار دهید تا این تغییر بر روی تمامی محصولات متغیر شما اعمال شود.
کد 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 = '' . $saleprice . ' ' . $price . '';
}
return $price;
}