Publicado el

Mostrar precio original y con descuento

Si estás usando Woocommerce Role Pricing o Woocommerce Groups Pricing, para aplicar descuentos en tu tienda Woocommerce según roles/grupos, y necesitas mostrar tanto el precio original como el descontado, puedes añadir este código a tu fichero functions.php:

Si estás usando Woocommerce 2.5.x


add_filter( 'woocommerce_get_price_html', 'your_own_price_html', 100, 2 );
function your_own_price_html( $price, $product ){
  $result = $price;

  if ( get_option( "wgp-baseprice", "regular" ) == "sale" ) {
    $price_key = '_price';
  } else {
    $price_key = '_regular_price';
  }

  if ( $product->product_type == 'variable' ) {

    $children = $product->get_children(true);

    $original_prices = array();
    $commission = 0;
    foreach ( $children as $child ) {
      $original_prices[] = get_post_meta( $child, $price_key, true );
      if ( $commission == 0 ) {
        $commission = WGP_Variations_Admin::get_commission( $product, $child );
      }
    }

    if ( $commission > 0 ) {
      $min_price = min( $original_prices );
      $max_price = max( $original_prices );
      $original_price = $min_price !== $max_price ? sprintf( _x( '%1$s–%2$s', 'Price range: from-to', 'woocommerce' ), wc_price( $min_price ), wc_price( $max_price ) ) : wc_price( $min_price );
    }
  } else {
    $commission = WooGroupPricing::get_commission( $product );
    if ( $commission ) {
      $original_price = woocommerce_price(get_post_meta( $product->id, $price_key, true ));
    }
  }

  if ( $commission ) {
    $result =  'Was:' . $original_price . " Now:" . $price;
  }
  return $result;
}

Si estás usando Woocommerce < 2.5.0


add_filter( 'woocommerce_get_price_html', 'your_own_price_html', 100, 2 );
function your_own_price_html( $price, $product ){
  $result = $price;
  if ( $product->is_type( 'variation' ) ) {
     $commission = WGP_Variations_Admin::get_commission( $product, $product->variation_id );
  } else {
     $commission = WooGroupPricing::get_commission( $product );
  }
  if ( $commission ) {
     $result =  'Was:' . woocommerce_price(get_post_meta( $product->id, '_price', true )) . " Now:" . $price;
  }
  return $result;
}