مشکل نمایش قیمت در محصولات متغیر (ووکامرس)

sohrabtahmasbi

تازه وارد
درود بر دوستان عزیز

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

محصولات به دو صورت متری و کلافی فروخته میشن که هر دو قیمت در زیر توضیحات محصول نمایش داده میشن و خریدار رو در نگاه اول گمراه میکنه ، قصد دارم که فقط یکی از این دو قیمت در صفحات نمایش داده بشه.

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

function patricks_custom_variation_price( $price, $product ) {
$target_product_types
= array(
'variable'
);
if ( in_array ( $product->product_type, $target_product_types ) ) {
// if variable product return and empty string
return '';
}
return $price;
}
add_filter
('woocommerce_get_price_html', 'patricks_custom_variation_price', 10, 2);




قبل از استفاده از کد:

You must be registered for see images attach


بعد از استفاده از کد:

You must be registered for see images attach


 
آخرین ویرایش توسط مدیر:

Mohammad

مدیر انجمن
پرسنل مدیریت
انتقال یافت پرسش و پاسخ ووکامرس

کد زیر رو بزار توی functions.php قالبت و نتیجه رو بگو که اگر درست بود دوستان دیگر هم استفاده کنن.

کد:
add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);

function custom_variation_price( $price, $product ) {

	$price = '';

	if ( !$product->min_variation_price || $product->min_variation_price !== $product->max_variation_price ) {
		$price .= '<span class="from">' . _x('From', 'min_price', 'woocommerce') . ' </span>';
		$price .= woocommerce_price($product->get_price());
	}

	return $price;
}
 

alix201

تازه وارد
انتقال یافت پرسش و پاسخ ووکامرس

کد زیر رو بزار توی functions.php قالبت و نتیجه رو بگو که اگر درست بود دوستان دیگر هم استفاده کنن.

add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);

function custom_variation_price( $price, $product ) {

$price = '';

if ( !$product->min_variation_price || $product->min_variation_price !== $product->max_variation_price ) {
$price .= '<span class="from">' . _x('From', 'min_price', 'woocommerce') . ' </span>';
$price .= woocommerce_price($product->get_price());
}

return $price;
}

اقا این کد  هم مشکل داره   همون مشکی که دوستمون بالا گفتن :(

 
آخرین ویرایش توسط مدیر:

جاویدان

کاربر عضو
اقا این کد  هم مشکل داره   همون مشکی که دوستمون بالا گفتن :(
با سلام

دوست عزیز

بهتر نیست به جای اینکه بگید مشکل داره بگید مشکلتون دقیقا کجاست آیا خطایی اروری چیزی میبینید عکسی چیزی ضمیمه کنید.

موفق باشید

 

alix201

تازه وارد
با سلام

دوست عزیز

بهتر نیست به جای اینکه بگید مشکل داره بگید مشکلتون دقیقا کجاست آیا خطایی اروری چیزی میبینید عکسی چیزی ضمیمه کنید.

موفق باشید
دوست عزیز   قیمتهای محصولاتی رو  که چند قیمت مختلف دارند  با این کد  درست  میشه و  تو پیشنمایش  یک قیمت نشون میده تا اینجای کار کد  درست عمل میکنه   ولی  برای محصولاتی که   فقط یک  قیمت دارند و  محصول ساده هستند   قیمت مخفی میشه   نه  تو پیشنمایش قیمت هست  و نه تو صفحه محصول   باید (باید کدی باشه که  فقط رو  محصولات متغییر عمل کنه  نه   رو کل محصولات )

 

MahdiY

راهبر انجمن
سلام

کد زیر را تست کنید

کد:
add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);

function custom_variation_price( $price, $product ) {
	
	if($product->product_type !== "variable")
		return $price;

	if ( !$product->min_variation_price || $product->min_variation_price !== $product->max_variation_price )
		return '<span class="from">از </span>' . woocommerce_price($product->get_price());

	return $price;
}
 

usas313

تازه وارد
درود بر شما

نمیدونم مشکل شما حل شد یا نه ولی من این کد رو پیدا کردم و تست کردم ؛ کاملا جواب میده.

کمترین قیمت رو هم نمایش میده:

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;
}


امیدوارم مشکلتون حل بشه :)

 

omidkh007

تازه وارد
درود بر شما

نمیدونم مشکل شما حل شد یا نه ولی من این کد رو پیدا کردم و تست کردم ؛ کاملا جواب میده.

کمترین قیمت رو هم نمایش میده:

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;
}


امیدوارم مشکلتون حل بشه :)
خیییلی ممنون مشکل منم حل شد

 

Tir2

تازه وارد
درود بر شما

نمیدونم مشکل شما حل شد یا نه ولی من این کد رو پیدا کردم و تست کردم ؛ کاملا جواب میده.

کمترین قیمت رو هم نمایش میده:

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;
}


امیدوارم مشکلتون حل بشه :)




سلام دوستان . وقت بخیر .

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

من میخوام اصلا اون قیمت نباشه ! میشه ؟

You must be registered for see images attach


 

sunset2000

تازه وارد
درود بر شما

نمیدونم مشکل شما حل شد یا نه ولی من این کد رو پیدا کردم و تست کردم ؛ کاملا جواب میده.

کمترین قیمت رو هم نمایش میده:

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;
}


امیدوارم مشکلتون حل بشه :)
سلام

این کد رو کجا باید وارد کرد دقیقا؟

 

Tir2

تازه وارد
سلام .

ببخشید این سوال منم جواب بدید لطفا



 

samyar1

تازه وارد
درود بر شما

نمیدونم مشکل شما حل شد یا نه ولی من این کد رو پیدا کردم و تست کردم ؛ کاملا جواب میده.

کمترین قیمت رو هم نمایش میده:

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;
}


امیدوارم مشکلتون حل بشه :)
درود، ممنون دوست عزیز، کد به درستی و خوبی کار می کنه.

 

hhap.75@gmail.com

تازه وارد
سلام و احترام.

دوستان ما وقتی داخل ووکامرس برای یک محصول متغیر قیمت معمولی و قیمت ویژه تعریف میکنیم متاسفانه فقط قیمت معمولی رو دوبار نشون میده.

این اتفاق هم داخل قالب میافته هم داخل پیشخوان سایت.نسخه ووکامرس هم 3.5.6 هست. قبلا ما همینطور کار میکردیم و درست بود ولی فکر کنم بعد از آبدیت اینطور شده.

ممنونم از راهنمایی شما.

 

Mohammad

مدیر انجمن
پرسنل مدیریت
سلام و احترام.

دوستان ما وقتی داخل ووکامرس برای یک محصول متغیر قیمت معمولی و قیمت ویژه تعریف میکنیم متاسفانه فقط قیمت معمولی رو دوبار نشون میده.

این اتفاق هم داخل قالب میافته هم داخل پیشخوان سایت.نسخه ووکامرس هم 3.5.6 هست. قبلا ما همینطور کار میکردیم و درست بود ولی فکر کنم بعد از آبدیت اینطور شده.

ممنونم از راهنمایی شما. 
این مربوط به قالبه دوست من احتمالا!

 

hamed.mhz

تازه وارد
@Tir2

add_filter( 'woocommerce_variable_sale_price_html',
'lw_variable_product_price', 10, 2 );
add_filter( 'woocommerce_variable_price_html',
'lw_variable_product_price', 10, 2 );

function lw_variable_product_price( $v_price, $v_product ) {

// Regular Price
$v_prices = array( $v_product->get_variation_price( 'min', true ),
$v_product->get_variation_price( 'max', true ) );
$v_price = $v_prices[0]!==$v_prices[1] ? sprintf(__('From: %1$s', 'woocommerce'),
wc_price( $v_prices[0] ) ) : wc_price( $v_prices[0] );

// Sale Price
$v_prices = array( $v_product->get_variation_regular_price( 'min', true ),
$v_product->get_variation_regular_price( 'max', true ) );
sort( $v_prices );
$v_saleprice = $v_prices[0]!==$v_prices[1] ? sprintf(__('From: %1$s','woocommerce')
, wc_price( $v_prices[0] ) ) : wc_price( $v_prices[0] );

if ( $v_price !== $v_saleprice ) {
$v_price = '<del>'.$v_saleprice.$v_product->get_price_suffix() . '</del> <ins>' .
$v_price . $v_product->get_price_suffix() . '</ins>';
}
return $v_price;
}

add_filter('woocommerce_get_price_html', 'lw_hide_variation_price', 10, 2);
function lw_hide_variation_price( $v_price, $v_product ) {
$v_product_types = array( 'variable' );
if ( in_array ( $v_product->product_type, $v_product_types ) ) {
return '';
}
// return regular price
return $v_price;
}

این کد رو وارد کنید. مشکل من حل شد

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( __( 'From: %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( __( 'From: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
if ( $price !== $saleprice ) {
$price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>';
}
return $price;
}
 
آخرین ویرایش:
بالا