معرفی افزونه برای نمایش تک قیمت

mehdiace

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

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

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

 

پیام یزدانیان

کاربر عضو
سلام برای اینکار 

کد زیر را در فایل فانکشن قالب خود اضافه کنید . 

add_filter( 'woocommerce_variable_price_html', 'custom_variable_displayed_price', 10, 2 );
function custom_variable_displayed_price( $price_html, $product ) {

if ( ! ( is_shop() || is_product_category() || is_product_tag() ) )
return $price_html;


$default_attributes = $product->get_default_attributes();

foreach($product->get_available_variations() as $variation){
$found = true;

foreach( $variation['attributes'] as $key => $value ){
$taxonomy = str_replace( 'attribute_', '', $key );

if( isset($default_attributes[$taxonomy]) && $default_attributes[$taxonomy] != $value ){
$found = false;
break;
}
}
if( $found ) {
$default_variaton = $variation;
break;
}
else {
continue;
}
}

if( ! isset($default_variaton) )
$price_html;

if ( $default_variaton['display_price'] !== $default_variaton['display_regular_price'] && $product->is_on_sale()) {
$price_html = '<del>' . wc_price($default_variaton['display_regular_price']) . '</del> <ins>' . wc_price($default_variaton['display_price']) . '</ins>';
} else {
$price_html = wc_price($default_variaton['display_price']);
}
return $price_html;
}


موفق و مؤید باشید.

 

mehdiace

کاربر عضو
سلام برای اینکار 

کد زیر را در فایل فانکشن قالب خود اضافه کنید . 

add_filter( 'woocommerce_variable_price_html', 'custom_variable_displayed_price', 10, 2 );
function custom_variable_displayed_price( $price_html, $product ) {

if ( ! ( is_shop() || is_product_category() || is_product_tag() ) )
return $price_html;


$default_attributes = $product->get_default_attributes();

foreach($product->get_available_variations() as $variation){
$found = true;

foreach( $variation['attributes'] as $key => $value ){
$taxonomy = str_replace( 'attribute_', '', $key );

if( isset($default_attributes[$taxonomy]) && $default_attributes[$taxonomy] != $value ){
$found = false;
break;
}
}
if( $found ) {
$default_variaton = $variation;
break;
}
else {
continue;
}
}

if( ! isset($default_variaton) )
$price_html;

if ( $default_variaton['display_price'] !== $default_variaton['display_regular_price'] && $product->is_on_sale()) {
$price_html = '<del>' . wc_price($default_variaton['display_regular_price']) . '</del> <ins>' . wc_price($default_variaton['display_price']) . '</ins>';
} else {
$price_html = wc_price($default_variaton['display_price']);
}
return $price_html;
}


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

 

پیام یزدانیان

کاربر عضو
می تونید به این صورت هم قرار بدید: 

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

کد:
function wc_varb_price_range( $wcv_price, $product ) {
 
    $prefix = sprintf('%s: ', __('<small>شروع از </small>', 'wcvp_range'));
 
    $wcv_reg_min_price = $product->get_variation_regular_price( 'min', true );
    $wcv_min_sale_price    = $product->get_variation_sale_price( 'min', true );
    $wcv_max_price = $product->get_variation_price( 'max', true );
    $wcv_min_price = $product->get_variation_price( 'min', true );
 
    $wcv_price = ( $wcv_min_sale_price == $wcv_reg_min_price ) ?
        wc_price( $wcv_reg_min_price ) :
        '<del>' . wc_price( $wcv_reg_min_price ) . '</del>' . '<ins>' . wc_price( $wcv_min_sale_price ) . '</ins>';
 
    return ( $wcv_min_price == $wcv_max_price ) ?
        $wcv_price :
        sprintf('%s%s', $prefix, $wcv_price);
}
 
add_filter( 'woocommerce_variable_sale_price_html', 'wc_varb_price_range', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_varb_price_range', 10, 2 );
 
آخرین ویرایش توسط مدیر:

mehdiace

کاربر عضو
می تونید به این صورت هم قرار بدید: 

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

function wc_varb_price_range( $wcv_price, $product ) {

$prefix = sprintf('%s: ', __('<small>شروع از </small>', 'wcvp_range'));

$wcv_reg_min_price = $product->get_variation_regular_price( 'min', true );
$wcv_min_sale_price = $product->get_variation_sale_price( 'min', true );
$wcv_max_price = $product->get_variation_price( 'max', true );
$wcv_min_price = $product->get_variation_price( 'min', true );

$wcv_price = ( $wcv_min_sale_price == $wcv_reg_min_price ) ?
wc_price( $wcv_reg_min_price ) :
'<del>' . wc_price( $wcv_reg_min_price ) . '</del>' . '<ins>' . wc_price( $wcv_min_sale_price ) . '</ins>';

return ( $wcv_min_price == $wcv_max_price ) ?
$wcv_price :
sprintf('%s%s', $prefix, $wcv_price);
}

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

سلام دوست عزیز خیلی ممنونم

من کد اولی که دادم تغییری نکرد و کد دوم سایت از کار افتاد که مجبور شدم ریستور کنم

 

پیام یزدانیان

کاربر عضو
سلام مجدد کدها را بین  <?php و <؟ بزارید.

یا نمونه زیر را اخر فانکشن اضافه کنید.

<?php


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


function wc_varb_price_range( $wcv_price, $product ) {

$prefix = sprintf('%s: ', __('<small>شروع از </small>', 'wcvp_range'));

$wcv_reg_min_price = $product->get_variation_regular_price( 'min', true );
$wcv_min_sale_price = $product->get_variation_sale_price( 'min', true );
$wcv_max_price = $product->get_variation_price( 'max', true );
$wcv_min_price = $product->get_variation_price( 'min', true );

$wcv_price = ( $wcv_min_sale_price == $wcv_reg_min_price ) ?
wc_price( $wcv_reg_min_price ) :
'<del>' . wc_price( $wcv_reg_min_price ) . '</del>' . '<ins>' . wc_price( $wcv_min_sale_price ) . '</ins>';

return ( $wcv_min_price == $wcv_max_price ) ?
$wcv_price :
sprintf('%s%s', $prefix, $wcv_price);
}

?>











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

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

function custom_variation_price( $price, $product ) { 

     $price = '';

     $price .= wc_price($product->get_price()); 

     return $price;
}
 

mehdiace

کاربر عضو
سلام مجدد کدها را بین  <?php و <؟ بزارید.

یا نمونه زیر را اخر فانکشن اضافه کنید.

<?php


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


function wc_varb_price_range( $wcv_price, $product ) {

$prefix = sprintf('%s: ', __('<small>شروع از </small>', 'wcvp_range'));

$wcv_reg_min_price = $product->get_variation_regular_price( 'min', true );
$wcv_min_sale_price = $product->get_variation_sale_price( 'min', true );
$wcv_max_price = $product->get_variation_price( 'max', true );
$wcv_min_price = $product->get_variation_price( 'min', true );

$wcv_price = ( $wcv_min_sale_price == $wcv_reg_min_price ) ?
wc_price( $wcv_reg_min_price ) :
'<del>' . wc_price( $wcv_reg_min_price ) . '</del>' . '<ins>' . wc_price( $wcv_min_sale_price ) . '</ins>';

return ( $wcv_min_price == $wcv_max_price ) ?
$wcv_price :
sprintf('%s%s', $prefix, $wcv_price);
}

?>










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

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

function custom_variation_price( $price, $product ) {

$price = '';

$price .= wc_price($product->get_price());

return $price;
}

سلام دوست گرامی من کد آخری گذاشتم و جواب داد خیلی خیلی ممنونم از راهنماییتون

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

 
بالا