Igual te sirve algo así, en el functions.php de tu tema o tema hijo, o mucho mejor crear un plugin de funciones propias.
<?php
/* Poner texto antes y despues del precio */
add_filter( 'woocommerce_format_sale_price', 'filter_function_name', 10, 3 );
function filter_function_name( $price, $regular_price, $sale_price ) {
$regular_price = 'Antes: '. wc_price( $regular_price);
$sale_price = 'Ahora: ' . wc_price( $sale_price);
$price = $regular_price . ' - '. $sale_price;
return $price;
};
?>
Muchas gracias por tu respuesta amigo. El código funciona perfectamente con productos normales, con los productos variables que tienen descuento es otra cosa, pone los precios en 0 y dejan de funcionar.
Alguna idea? ¡Muchas gracias por tu tiempo!
Tienes razón, no pensé en las variaciones. Es un caso especial, no es descuento, es precio según variables. Lo mejor es no ponerlo en las variaciones. Elimina el anterior código y pon este a ver si va mejor:
<?php
/* Texto antes y despues del precio en descuento */
add_filter( 'woocommerce_format_sale_price', 'filter_function_name', 10, 3 );
function filter_function_name( $price, $regular_price, $sale_price ) {
$product = new WC_Product( get_the_ID() );
if (!is_admin() && $product->is_type( 'simple' ) ) {
$regular_price = 'Antes: '. wc_price( $regular_price);
$sale_price = 'Ahora: ' . wc_price( $sale_price);
$price = $regular_price . ' - '. $sale_price;
}
return $price;
};
?>
Gracias por la respuesta amigo, acabo de poner la actualización del código y queda igual.
Con respecto a los precios variables, el fallo ocurre cuando los precios variables tienen descuento cada uno.
Igual algún código o plugin que tengas puede interferir. No sé decirte dónde puede estar el problema. Lo he probado y me funciona perfectamente, únicamente me reconoce los productos con descuentos, el resto los deja exactamente como están sin modificar.
– Comprueba el código por si existe algún error al teclear
– Vacía cachés si usas o los temporales del navegador
Tu tienes razón amigo, el código solo afecta a los productos con descuento, lo que me da error es cuando un producto variable tiene descuentos en sus variaciones.
Ejemplo: Si pantalón (producto variable) en su variación de talla ‘s’ tiene un descuento; ya ese producto deja de funcionar.
Seguiré investigando pero me funciona bien. Los productos simples, variables, variables con descuento, no se ven afectados. Unicamente modifica los productos simples con descuento.
Asegurate de no haber puesto los dos códigos, deja el último.
Vacía cachés si usas o los temporales del navegador.
Sigo haciendo pequeños cambios pero con el mismo resultado en los productos variables.
Cualquier producto variable que tenga un descuento en sus variaciones deja de funcionar
– ¿En qué archivo estás poniendo el código? ¿En el functions.php del tema?
– Prueba crearte un plugin y poner ese código dentro. Así es como estoy haciendo las pruebas.
– ¿Tienes algún plugin similar que pueda interferir con el código?
– Estoy editando el funtions mientras tando, al menos hasta que me funcione todo correctamente.
. No estoy usando ningún plugin que tenga que ver con esto.
Uno de los principales problemas que me pasaba con tu código era que en los productos variables en oferta el precio quedaba en $0 y las variaciones no funcionaban. Ya pude hacer que los precios de los productos variables con descuento no se quedara en $0 y se mostraran «bien».
Ahora, estoy usando este código junto con el de la visualización de los precios:
/*---------- Mostrar texto de ahorro -----------*/
function ts_you_save() {
global $product;
if ($product->is_type('simple') || $product->is_type('external') || $product->is_type('grouped')) {
$regular_price = get_post_meta($product->get_id(), '_regular_price', true);
$sale_price = get_post_meta($product->get_id(), '_sale_price', true);
if (!empty($sale_price)) {
$amount_saved = $regular_price - $sale_price;
$currency_symbol = get_woocommerce_currency_symbol();
$percentage = round((($regular_price - $sale_price) / $regular_price) * 100);
?>
<p style="font-size:24px;color:red;"><b>Ahorras: <b>$</b><?php echo number_format($amount_saved, 2, '.', '') . " (" . number_format($percentage, 0, '', '') . "%)"; ?></b></p>
<?php
}
}
}
add_action('woocommerce_single_product_summary', 'ts_you_save', 11);
Pero pasa igual con los productos variables
Prueba creando un plugin, no edites el functions.php, deja el original.