Agregar campo de texto debajo del precio

Hola si! Obviamente hay que crear toda la estructura HTML etc. Para lo que necesitas.

Hola Mariano como estás? Te hago una consulta rápida. Me gustaría excluir un par de productos por ID en el código. Será posible? Estuve investigando la lógica pero no me está quedando bien…

Hola Leo, no entiendo que queres hacer puntualmente. Si excluir productos de woocommmerce o queres excluir el código del cual trata el tema de esos productos.

Quiero excluir solo 2 productos para que no se muestre el capo de texto del código.

La verdad Leo que en cuanto a mis conocimientos haría algo con custom field y dejaría activado para todos. Agregando con el custom field un checkbox o radiobutton y aparezca a la derecha el panel que trae todos los productos y una vez seleccionado desaparecería solo para eso.

Quizás no entiendas mucho pero cuando me haga un tiempo intento hacerlo y posteo los pasos.

Perdón, no logro comprender a qué código haces referencia… si podes aclararlo lo reviso con detalle. Así mismo, si es un código PHP deberías de agregar la siguiente condición al principio del código que querés excluir para ciertos ids:

Edited por comentario de @Fer_Factory

global $product; // Llama a la variable producto en tu función

    // Utiliza un condicional para saber si el producto a trabajar es uno de los siguientes (por ID) ~ Modificar IDS para que el código funcione
    if( $product->get_id() == /* Uno de tus IDS */ || $product->get_id() == /* Otro de tus IDS */) return; // concluir función si este condicional se cumple

Con eso debería de estar

@Ojosdenebulosa Estas asignando y no evaluando :sweat_smile: el codigo tendria que tener doble = en los ifs

1 me gusta

Me preocupé porque tenga lindos colores el código y bien comentado, pero no me fijé en lo esencial jaja el que sabe sabeeee

1 me gusta

Como estas, tengo 2 consultas… Como hago para agregar un recuadro en donde dice 6 cuotas sin interes? Te paso la imagen

Tambien queria consultarte. Como hago si quiero solo que la descripcion extra de esos campos aparezcan solo en ciertos artículos que yo seleccione?

Como estás? En éste mismo código… como se podría hacer al revez… a que me refiero: En vez de que sea específico para determinados ID, el código excluya a los ID que se agreguen en el PHP.

Necesito tener ésto mismo, pero NO en 2 o 3 productos de todo el catálogo.

Pasa cuál es el código con el que estás trabajando. Esto es CSS simple, básicamente habría que poner el contenido de texto que querés trabajar con un “recuadro” dentro de un elemento (div, span, p, etc) y a eso aplicarle un estilo.

Si me aclaras qué código es lo preparamos para que sea más fácil.


“Cómo hago si quiero solo que la descripción extra de esos campos…” a qué te referís con la “descripción extra”?

Fijate si llegas a comprender esta respuesta ver acá. Acá aplicamos código para excluir artículos de una funcion/parte de una función. Entiendo que serviría para lo que querés hacer, solamente ponelo justo antes del código que “hace” lo que llamas “descripción extra”

Ese código hace eso que decís.

Vos tenés una X líneas de código que hacen algo, si vos antes de ese algo le pones eso que compartí todo debería de concluir si se llega a ese condicional.

¿Probaste y no te funciona como comento?

Como estás? Gracias, ya lo logré hacer.
Te consulto algo más… en vez de ser un ID de producto específico. Para el caso de Categorías (hacerlo por ID de categoría) Como sería el fragmetno?
Intenté con product_cat_id pero no me funcionó.

Alguien pudo resolver esto? que en la parte de cuotas aparezca punto y no coma para expresar los miles?como?

Hola @imagen_digital, fijate si te sirve:

add_filter( 'woocommerce_get_price_html', 'change_displayed_sale_price_html', 10, 2 );
    function change_displayed_sale_price_html( $price, $product ) {
		
		
        if( $product->is_type('simple') ){
            
             $regular_price = (float) $product->get_regular_price(); // Regular price
             $sale_price = (float) $product->get_price(); // Active price (the "Sale price" when on-sale)

         
             $precision = 2; // Max number of decimals
            	

                $cuotapreciosale = round (($sale_price + ($sale_price / 100 * 20)) / 18, $precision);
				setlocale(LC_MONETARY,"es_AR.UTF-8");
				$cuotapreciosaleAR = money_format("%!n", $cuotapreciosale);
                $price .= sprintf( __('<br><span style="font-size:15px;color:#d66d50;"> <b>18</b> CUOTAS SIN INTERES DE $%s</span>', 'woocommerce' ), $cuotapreciosaleAR );
             
             }
        return $price;
		
		
    }

hola mariano gracias por tu aporte queria replicar este codigo pero no me sale espero me puedas ayudar sobre el texto en el precio de antes y ahora subo una foto para que me ayudes a generar un codigo

hola! funciona muy bien. Pero me gustaria que solo aparezca en una categoria de producto. Alguien me puede ayudar?

Hola!! Gracias Gracias por el aporte, he leído varias veces el hilo, y por suerte, pude mostrar el texto tanto en la tienda como en la página de producto, y que lo tome tanto en productos variables como en productos simples (que es el primer codigo que pasaste)

El problema que tengo, y leí no sé si en este hilo o en otro que también estuviste comentando. Los productos variables que sus atributos tienen distinto precio, el texto se aplica sobre el precio menor, no me modifica (en mi caso 3 cuotas) sobre el valor de la variación que elija.

No encuentro en ningún lado qué código poner. No soy programadora, pero me doy maña buscando y nada. Sabrás cuál es la solucion?

Ésto es lo que me sucede:


Al tener seleccionada la variación, me cambia el precio pero no el núm del precio dividido 3.

Te paso la web con la que estoy trabajando:Ray Ban 4165 • Multiopticas Juramento

Ahora, les comparto el código a quién le sirva de lo que ya implementé y saqué en limpio. Hace la división sin sumarme un % y no tiene decimales (solucioné el tema del . como decimal que no tomaba la coma, por más que en Ajuste de Woo lo tenga de esa forma)

// agregar texto de cuotas
add_filter( 'woocommerce_get_price_html', 'change_displayed_sale_price_html', 10, 2 );
    function change_displayed_sale_price_html( $price, $product ) {
		
		
        if( $product->is_type('simple') ){
            
             $regular_price = (float) $product->get_regular_price(); // Regular price
             $sale_price = (float) $product->get_price(); // Active price (the "Sale price" when on-sale)

         
             $precision = 0; // Max number of decimals
            
                $cuotapreciosale = round ($sale_price / 3, $precision);
                $price .= sprintf( __('<br><br><span style="font-size:12px;color:#d66d50;"> <b>3</b> CUOTAS SIN INTERES DE <b>$%s</b></span>', 'woocommerce' ), $cuotapreciosale );
             
             

} else if( $product->is_type( 'variable' ) ){
 $regular_price = (float) $product->get_regular_price(); // Regular price
             $sale_price = (float) $product->get_price(); // Active price (the "Sale price" when on-sale)

         
             $precision = 0; // Max number of decimals
            
                $cuotapreciosale = round ($sale_price / 3, $precision);
                $price .= sprintf( __('<br><br><span style="font-size:12px;color:#d66d50;"> <b>3</b> CUOTAS S/INTERES DE <b>$%s</b></span>', 'woocommerce' ), $cuotapreciosale );
} 
        return $price;
		
		
    }

Espero les sirva, y Mariano, gracias de nuevo por el aporte y si vos o alguien sabe cómo resolver el tema de las variaciones con distintos precios. Gracias!!

Espero que te sirva. Es para precio por variacion y para los que tienen precio fijo. Saludos!

PD: Apluado que te hayas roto la cabeza antes de preguntar. Te felicito por tu esfuerzo!

add_filter( 'woocommerce_get_price_html', 'change_displayed_sale_price_html', 10, 2 );

function change_displayed_sale_price_html( $price, $product ) {

    if ( $product->is_type('simple') ) {
        $regular_price = (float) $product->get_regular_price(); // Precio Regular
        $sale_price = (float) $product->get_price(); // Active price (the "Sale price" when on-sale)
        $precision = 0; // Max number of decimals
        $cuotapreciosale = round ($sale_price / 3, $precision);
        $price .= sprintf( __('<br><br><span style="font-size:12px;color:#d66d50;"><b>3</b> CUOTAS SIN INTERES DE <b>$%s</b></span>', 'woocommerce' ), $cuotapreciosale );
    } elseif ( $product->is_type( 'variable' ) ) {
        $price .= sprintf( __('<br><br><span id="cuotas_info" style="font-size:12px;color:#d66d50;"><b>3</b> CUOTAS S/INTERES DE <b>$%s</b></span>', 'woocommerce' ), '' );
    }

    return $price;

}

add_action( 'woocommerce_single_product_summary', 'display_cuotas_script', 20 );

function display_cuotas_script() {
    global $product;
    if ( $product->is_type( 'variable' ) ) {
        ?>
        <script>
            jQuery(document).ready(function($) {
                $('form.variations_form').on('show_variation', function(event, variation) {
                    var variation_price = parseFloat(variation.display_price);
                    var precision = 0; // Número máximo de decimales
                    var cuotapreciosale = Math.round(variation_price / 3, precision);
                    $('#cuotas_info').html('<b>3</b> CUOTAS S/INTERES DE <b>$' + cuotapreciosale + '</b>');
                });
            });
        </script>
        <?php
    }
}

1 me gusta

A los que preguntaron si se puede hacer por categoria paso el siguiente codigo. A algunos les va a servir. Van a ver entre parentesis array(‘categoria1’, ‘categoria2’). Ahi van a ingresar las categorias que necesitan que se agregue el campo. Pongan en minuscula.

Por otro lado el ejemplo esta hecho con el siguiente estructura de slug.

https://dominio.com**/categoria1/producto/**prod-1/

add_filter( 'woocommerce_get_price_html', 'change_displayed_sale_price_html', 10, 2 );
function change_displayed_sale_price_html( $price, $product ) {
    $cuotas_categories = array('categoria1', 'categoria2'); // Agrega las categorías para las que se mostrarán los precios de las cuotas
    $product_categories = wp_get_post_terms( $product->get_id(), 'product_cat', array('fields' => 'slugs') );
    if ( $product->is_type('simple') && array_intersect( $cuotas_categories, $product_categories ) ) {
        $regular_price = (float) $product->get_regular_price(); // Regular price
        $sale_price = (float) $product->get_price(); // Active price (the "Sale price" when on-sale)
        $precision = 0; // Max number of decimals
        $cuotapreciosale = round ($sale_price / 3, $precision);
        $price .= sprintf( __('<br><br><span style="font-size:12px;color:#d66d50;"><b>3</b> CUOTAS SIN INTERES DE <b>$%s</b></span>', 'woocommerce' ), $cuotapreciosale );
    } elseif ( $product->is_type( 'variable' ) && array_intersect( $cuotas_categories, $product_categories ) ) {
        $price .= sprintf( __('<br><br><span id="cuotas_info" style="font-size:12px;color:#d66d50;"><b>3</b> CUOTAS S/INTERES DE <b>$%s</b></span>', 'woocommerce' ), '' );
    }
    return $price;
}

add_action( 'woocommerce_single_product_summary', 'display_cuotas_script', 20 );
function display_cuotas_script() {
    global $product;
    $cuotas_categories = array('categoria1', 'categoria2'); // Agrega las categorías para las que se mostrarán los precios de las cuotas
    $product_categories = wp_get_post_terms( $product->get_id(), 'product_cat', array('fields' => 'slugs') );
    if ( $product->is_type( 'variable' ) && array_intersect( $cuotas_categories, $product_categories ) ) {
        ?>
        <script>
            jQuery(document).ready(function($) {
                $('form.variations_form').on('show_variation', function(event, variation) {
                    var variation_price = parseFloat(variation.display_price);
                    var precision = 0; // Max number of decimals
                    var cuotapreciosale = Math.round(variation_price / 3, precision);
                    $('#cuotas_info').html('<b>3</b> CUOTAS S/INTERES DE <b>$' + cuotapreciosale + '</b>');
                });
            });
        </script>
        <?php
    }
}

1 me gusta