حذف محدوده(رنج) قیمت محصول در ووکامرس

حذف رنج قیمت

حذف رنج قیمت محصول در ووکامرس – یکی از مشکلات همده ای که وبمستران با آن دست و پنجه نرم میکنند.

اگر محصول متغیر شما دارای محدوه قیمت باشد، در ووکامرس این محدوه به صورت زیر نمایش داده می شود:

350000 – 420000 هزار تومان

گاهی اوقات این نوع نمایش برای کاربران ایده آل نبوده و ترجیح می دهند تنها یک قیمت واحد نمایش داده شود :

350000 هزار تومان

حذف رنج قیمت محصول در ووکامرس

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

کاربرانی که از محصولات ماهدیس وب (دیجی لند) استفاده می کنند، باید این کد را به انتهای فایل myfunctions اضافه کنند.

 


function mweb_variable_price_format( $price, $product ) {
 
 
    $min_price_regular = $product->get_variation_regular_price( 'min', true );
    $min_price_sale    = $product->get_variation_sale_price( 'min', true );
    $max_price = $product->get_variation_price( 'max', true );
    $min_price = $product->get_variation_price( 'min', true );
 
    $price = ( $min_price_sale == $min_price_regular ) ?
        wc_price( $min_price_regular ) :
        '<del>' . wc_price( $min_price_regular ) . '</del>' . '<ins>' . wc_price( $min_price_sale ) . '</ins>';
 
    return ( $min_price == $max_price ) ?
        $price :
        sprintf('%s', $price);
 
}
 
add_filter( 'woocommerce_variable_sale_price_html', 'mweb_variable_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'mweb_variable_price_format', 10, 2 );


add_action('init', 'mweb_get_product_loop_mobile_override');
function mweb_get_product_loop_mobile_override() {

  remove_filter( 'woocommerce_variable_sale_price_html', 'my_variation_price_format', 10, 2 );
  remove_filter( 'woocommerce_variable_price_html', 'my_variation_price_format', 10, 2 );
  remove_filter( 'woocommerce_format_price_range', 'mweb_modify_format_price_range', 10, 3 );

}

 

نظرات خود را با ما به اشتراک بگذارید.

دیدگاه کاربران
  • شهباز ۲۷ اسفند ۱۴۰۲

    سلام، من میخوام قیمت بجای ۲.۹۰۰.۰۰۰ تومان – ۳.۱۰۰.۰۰۰ تومان به شکل از ۲.۹۰۰.۰۰۰ تومان تا ۳.۱۰۰.۰۰۰ تومان نمایش داده بشه، این از و تا رو چجوری میتونم اضافه کنم؟

    • ماهدیس وب ۲۸ اسفند ۱۴۰۲

      درود بر شما تو کد بالا بعد از “تا” رو اضافه کنید

  • سعید بیکدلی ۱۰ بهمن ۱۴۰۲

    سلام ، اگر بخواهیم قیمت متغیر پیش فرض به جای کمترین قیمت نمایش بدیم لطفا راهنمایی کنید

    • ماهدیس وب ۱۰ بهمن ۱۴۰۲

      سلام

      add_filter( 'woocommerce_variable_price_html', 'mweb_variable_displayed_price', 10, 2 );
      function mweb_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 mweb_variable_price_format( $price, $product ) {
       
       
          $min_price_regular = $product->get_variation_regular_price( 'min', true );
          $min_price_sale    = $product->get_variation_sale_price( 'min', true );
          $max_price = $product->get_variation_price( 'max', true );
          $min_price = $product->get_variation_price( 'min', true );
       
          $price = ( $min_price_sale == $min_price_regular ) ?
              wc_price( $min_price_regular ) :
              '<del>' . wc_price( $min_price_regular ) . '</del>' . '<ins>' . wc_price( $min_price_sale ) . '</ins>';
       
          return ( $min_price == $max_price ) ?
              $price :
              sprintf('%s', $price);
       
      }
       
      add_filter( 'woocommerce_variable_sale_price_html', 'mweb_variable_price_format', 10, 2 );
      add_filter( 'woocommerce_variable_price_html', 'mweb_variable_price_format', 10, 2 );
      
      
      add_action('init', 'mweb_get_product_loop_mobile_override');
      function mweb_get_product_loop_mobile_override() {
      
        remove_filter( 'woocommerce_variable_sale_price_html', 'my_variation_price_format', 10, 2 );
        remove_filter( 'woocommerce_variable_price_html', 'my_variation_price_format', 10, 2 );
        remove_filter( 'woocommerce_format_price_range', 'mweb_modify_format_price_range', 10, 3 );
      
      }
      
      
  • dev.alireza.atoot ۳۱ تیر ۱۴۰۱

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

    • کارشناس ۸ مرداد ۱۴۰۱

      درود

      کد بروز شد.مجدد تست کنید.

  • محسن دهداريان ۲۳ آبان ۱۳۹۹

    سلام
    من برای حذف قیمت متغیر ها و فقط نشان دادن بالاترین قیمت هر محصول در سایت کد زیر را در انتهای کدها اضافه کردم:
    /**
    * Change price format from range to “From:”
    *
    * @param float $price
    * @param obj $product
    * @return str
    */
    function mweb_variable_price_format( $price, $product ) {

    $max_price_regular = $product->get_variation_regular_price( ‘max’, true );
    $max_price_sale = $product->get_variation_sale_price( ‘max’, true );
    $min_price = $product->get_variation_price( ‘min’, true );
    $max_price = $product->get_variation_price( ‘max’, true );

    $price = ( $max_price_sale == $max_price_regular ) ?
    wc_price( $max_price_regular ) :
    ‘‘ . wc_price( $max_price_regular ) . ‘‘ . ” . wc_price( $max_price_sale ) . ”;

    return ( $max_price == $min_price ) ?
    $price :
    sprintf(‘%s’, $price);

    }

    add_filter( ‘woocommerce_variable_sale_price_html’, ‘mweb_variable_price_format’, 10, 2 );
    add_filter( ‘woocommerce_variable_price_html’, ‘mweb_variable_price_format’, 10, 2 );

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

    • ماهدیس وب ۲۳ آبان ۱۳۹۹

      سلام
      میتونید با استفاده از شرط و تابع is_product_category( array( ‘shirts’, ‘games’ ) ) این کار رو انجام بدین

  • آواتار
    pub.parham381s ۷ مرداد ۱۳۹۹

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

    • ماهدیس وب ۸ مرداد ۱۳۹۹

      با سلام
      اصلاح شد

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

کد امنیتی Time limit is exhausted. Please reload CAPTCHA.