woocommerce

Si estás leyendo esto, es posible que te hayas encontrado el mismo problema que yo y nadie te haya dado una solución, ni Woocomerce, ni el soporte de tu tema.

En este artículo vamos a solucionar 2 problemas: precios por unidad en woocommerce y mostrar el precio mínimo.

Expongo el caso:
Tienes una tienda online, quieres vender al por mayor, pero no quieres vender unidades sueltas. Descubres que Woocommerce tiene una opción para vender productos variables, creas los atributos que van a variar y a continuación creas las variables para estos atributos. Publicas el producto y parece que está todo bien, pero cuando te fijas, te está mostrando el precio de la variable que menos cuesta y el precio de la variable que más cuesta, cuando lo que en realidad quieres es la que muestre el mínimo precio para no espantar al cliente, simplemen

Mostrar el precio mínimo, solución:

Para solventar este problema puedes añadir este código en la página functions.php de tu plantilla.

/**
* Use WC 2.0 variable price format, now include sale price strikeout
*
* @param string $price
* @param object $product
* @return string
*/
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 = ‘‘ . $saleprice . ‘ ‘ . $price . ‘‘;
}

return $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 );

Asignar precios por unidad en Woocommerce en productos variables

Es posible que tampoco quieras indicar el mínimo precio de las variantes, si no que quieras mostrar los precios por unidad en Woocommerce. Pues tras horas de búsqueda de información no he encontrado ninguna solución, pero… he conseguido hacer un pequeño truco que te puede servir. Primero debes copiar el código que te he indicado y después debes crear un nuevo atributo, y llamarlo «None», por ejemplo, luego añades una nueva variante con este atributo y le indicas el precio de la unidad. Luego pones que no tienes existencias para que nadie pueda hacer una compra y listo.

variable woocommerce

La cuestión es crear una variable sin existencias y asignarle el valor de la unidad.

Como ves, es un pequeño truco que no queda demasiado profesional, pero es una solución que te puede quitar dolores de cabeza.

Si no quieres cometer más errores, no te pierdas este artículo con los errores más comúnes en WordPress.