• Resuelto joseemanuelrr

    (@joseemanuelrr)


    Buenas tardes amigos, quisiera hacerles una pregunta que he estado buscando desde hace mucho tiempo.

    En resumen: Quisiera cambiar la forma en la que se muestran los precios en rebaja de woocommerce; quisiera que se mostrara un «Antes: Precio anterior. Después: Nuevo precio»

    Exactamente quiero hacer lo siguiente:

    https://www.youtube.com/watch?v=3hhILH8jXFQ

    Si alguien tiene idea de como se los agradecería

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 11 respuestas - de la 1 a la 11 (de un total de 11)
  • Moderador LGrusin

    (@lgrusin)

    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; 
    };
    ?>
    Iniciador del debate joseemanuelrr

    (@joseemanuelrr)

    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!

    Moderador LGrusin

    (@lgrusin)

    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; 
    };
    ?>
    Iniciador del debate joseemanuelrr

    (@joseemanuelrr)

    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.

    Moderador LGrusin

    (@lgrusin)

    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

    Iniciador del debate joseemanuelrr

    (@joseemanuelrr)

    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.

    Moderador LGrusin

    (@lgrusin)

    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.

    Iniciador del debate joseemanuelrr

    (@joseemanuelrr)

    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

    Moderador LGrusin

    (@lgrusin)

    – ¿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?

    Iniciador del debate joseemanuelrr

    (@joseemanuelrr)

    – 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

    Moderador LGrusin

    (@lgrusin)

    Prueba creando un plugin, no edites el functions.php, deja el original.

Viendo 11 respuestas - de la 1 a la 11 (de un total de 11)
  • El debate ‘Cambiar forma en que se ven los precios en rebaja’ está cerrado a nuevas respuestas.