• maitepresencia

    (@maitepresencia)


    Hola,
    Estoy creando una tienda online y me gustaría añadir texto junto al precio en una ficha de producto de WooCommerce. He encontrado el código adecuado que funciona perfectamente para añadir tanto texto antes como después del precio.
    El problema es que al insertar este código, el texto se añade en todos los productos de la página. En este caso necesito únicamente añadirlo a 1 producto en concreto. El texto sería «/letra», ya que es un producto personalizado con tu nombre, y varía el precio según el número de letras que tenga el nombre.

    ¿Alguien me podría por favor ayudar a modificar o saber dónde meter el código para que afecte únicamente a este producto? El código es el siguiente:

    function custom_price_message( $price ) {
    global $post;
    $product_id = $post->ID;
    $textafter = ' /letra'; //texto que vamos agregar
    return $price . '<span class="textafter">' . $textafter . '</span>'; //class textafter para el CSS
    }
    add_filter( 'woocommerce_get_price_html', 'custom_price_message' );

    Gracias!!

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

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • Moderador kallookoo

    (@kallookoo)

    Hola @maitepresencia

    Simplemente debes comprobar el ID del producto y añadirlo.
    La ID la puedes ver cuando editas el producto en la url.

    
    function custom_price_message( $price ) {
    	global $post;
    	$product_id = 0; /** Numero del producto. */
    	if ( isset( $post->ID ) &&  $product_id === $post->ID ) {
    		$price .= '<span class="textafter">/letra</span>';
    	}
    	return $price;
    }
    add_filter( 'woocommerce_get_price_html', 'custom_price_message' );
    
    Iniciador del debate maitepresencia

    (@maitepresencia)

    Hola Kallookoo muchas gracias por tu ayuda.
    He encontrado el ID del producto! Para poder insertarlo en mi código, tengo que sustituir lo que ponía de: $product_id = $post->ID; ??

    He unido tu código con el mío, antes de meterlo en la web, ¿podrías porfa decirme si crees que están bien fusionados? Gracias!!!

    function custom_price_message( $price ) {
    global $post;
    $product_id = 1253; /** Numero del producto. */
    	if ( isset( $post->ID ) &&  $product_id === $post->ID ) {
    		$price .= '<span class="textbefore">/letra</span>';
    $textbefore = 'Desde '; //texto que vamos agregar
    return '<span class="textbefore">' . $textbefore . '</span>' .$price; //class textbefore para el CSS
    }
    add_filter( 'woocommerce_get_price_html', 'custom_price_message' );
    Moderador kallookoo

    (@kallookoo)

    Hola @maitepresencia

    Te lo modifique un poco, como quieres añadir un span con su clase y texto directamente lo he añadido en el string, no tiene sentido crear una nueva variable para algo asi.
    Luego tambien tenias mas cerrado el if, y he añadido mas comentarios para que se entienda que hace cada parte.

    
    function custom_price_message( $price ) {
    	global $post;
    	$product_id = 1253; /** Numero del producto. */
    	/** 
    	 * Se añade "/letra" despues del precio
    	 * solo cuando el Id sea igual al definido en "$product_id" 
    	 */
    	if ( isset( $post->ID ) && $product_id === $post->ID ) {
    		$price .= '<span class="textbefore">/letra</span>';
    	}
    	/** 
    	 * Se añade antes del precio el texto "Desde" 
    	 * y se devuelve el precio con las modificaciones.
    	 * 
    	 * Se usa la clase "textbefore" en la etiqueta span para aplicar estilos CSS.
    	 */
    	return '<span class="textbefore">Desde</span>' . $price; 
    }
    add_filter( 'woocommerce_get_price_html', 'custom_price_message' );
    
    • Esta respuesta fue modificada hace 3 años por kallookoo.
    Iniciador del debate maitepresencia

    (@maitepresencia)

    Hola Kallookoo,

    Gracias por modificarlo. Sin embargo, si meto tu código no me funciona, no aparece nada en el producto al lado del precio.

    El código inicial que yo subí sí que mostraba el texto, pero con estas modificaciones no muestra nada 🙁

    ¿Puede ser que hayas usado «*» en lugar de «$» en el principio de las líneas de código del texto?

    Gracias

    Moderador kallookoo

    (@kallookoo)

    Hola @maitepresencia
    No comprendo esto:

    ¿Puede ser que hayas usado «*» en lugar de «$» en el principio de las líneas de código del texto?

    Los comentarios en PHP pueden ser /** */ o // y el signo $ se usa solamente para definir una variable.
    Perdona la pregunta pero estas segura que lo copias bien?

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • El debate ‘Texto junto al precio para 1 producto WooCommerce’ está cerrado a nuevas respuestas.