Mostrar rango de precios en variaciones de productos de WooCommerce

21 oct 2012, 23:26:55
Vistas: 14.7K
Votos: 1

Estoy trabajando en una tienda online usando Woocommerce, muchos productos tienen variaciones en tamaño y precio. ¿Hay alguna manera de mostrar el rango de precios (de mayor a menor) de las variaciones en la página del producto?

1
Comentarios

¿podemos ver el código que muestra tus variaciones?

Tom J Nowell Tom J Nowell
25 mar 2013 15:57:26
Todas las respuestas a la pregunta 2
0

prueba así:

/**
* Este código debe agregarse al functions.php de tu tema
**/
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('Desde', 'min_price', 'woocommerce') . ' </span>';
$price .= woocommerce_price($product->get_price());
if ( $product->max_variation_price && $product->max_variation_price !== $product->min_variation_price ) {
$price .= '<span class="to"> ' . _x('hasta', 'max_price', 'woocommerce') . ' </span>';

$price .= woocommerce_price($product->max_variation_price);
}

return $price;
}

fuente: https://gist.github.com/mikejolley/1600117

5 jun 2013 10:42:22
0

Me encontré con este hilo buscando la misma solución para productos agrupados. Al final terminé con el código de abajo... así que lo publico por si ayuda a otros. Esto no funcionará para productos variables, solo para agrupados. Pensé que sería relevante ya que los productos agrupados/variables son bastante similares y supuse que otros también podrían encontrarse con este hilo. Probablemente podrías limpiar un poco el span, pero esta es la versión rápida y sencilla que me sirvió para empezar.

/*** Devuelve el Rango de Precio para Productos Agrupados **/
function wc_grouped_price_html( $price, $product ) {
$all_prices = array();

foreach ( $product->get_children() as $child_id ) {
    $all_prices[] = get_post_meta( $child_id, '_price', true );
}

if ( ! empty( $all_prices ) ) {
    $max_price = max( $all_prices );
    $min_price = min( $all_prices );
} else {
    $max_price = '';
    $min_price = '';
}

$price = '<span class="from">' . _x('Desde: ', 'min_price', 'woocommerce') . woocommerce_price( $min_price ) .  _x(' hasta ', 'max_price', 'woocommerce') . ' </span>' . woocommerce_price( $max_price );

return $price;
}
add_filter( 'woocommerce_grouped_price_html', 'wc_grouped_price_html', 10, 2 );
2 mar 2014 12:15:22