Añadir un prefijo y sufijo personalizado al precio en WooCommerce

LucusHost, el mejor hosting

Cada palabra cuenta, incluso antes del precio.

En el mundo del ecommerce, donde un botón mal ubicado o una palabra ambigua pueden costarte una venta, los detalles no son detalles. Son estrategia. Y uno de esos microdetalles con macroimpacto es la forma en que presentas tus precios.

¿“Desde 25€” suena igual que “25€”? ¿Y qué tal “15€ por unidad” frente a un simple “15€”? La diferencia es sutil… pero decisiva. Como quien cambia una sonrisa por una carcajada: el fondo es el mismo, pero la impresión no.

Y ojo, porque el precio es casi siempre el primer lugar donde mira un cliente en una ficha de producto. Es el anzuelo visual que determina si el visitante se queda a leer… o se va a buscar en otra parte. Por eso, el cómo lo presentas no es solo una cuestión de estética, sino de estrategia.

En este artículo te muestro cómo puedes añadir prefijos y sufijos personalizados a los precios en WooCommerce sin recurrir a plugins externos. Solo tú, tu tienda… y unas líneas de código bien puestas.

¿Cuándo tiene sentido usar un prefijo o sufijo en el precio?

Esta funcionalidad es muy útil en las siguientes situaciones:

  • Venta por unidades o packs: mostrar “por unidad”, “por lote”, “por m²”, etc.
  • Precios desde: ideal para tiendas que venden servicios, presupuestos o productos personalizados (ej. “Desde 50€”).
  • Comunicación clara en mercados B2B o internacionales: donde se necesita añadir etiquetas como “+ IVA”, “sin impuestos” o similar.
  • Ofertas o precios promocionales: usar un sufijo como “hasta fin de stock” o “precio especial”.

Al aplicarlo bien, puedes generar confianza, mejorar la transparencia y reducir dudas en la mente del comprador.

Estrategia: cómo aprovecharlo para vender más

Aquí te dejo algunas formas en que puedes usar esta personalización de precios como herramienta estratégica:

ObjetivoEstrategia con prefijo/sufijo
Aumentar conversionesAñade claridad: “por unidad”, “por servicio”, etc.
Mejorar percepción de valorUsa prefijos como “Desde”, para dar margen de precio
Evitar malentendidos legalesAclara si el precio incluye o no impuestos
Comunicar promocionesSufijos como “hasta agotar existencias”
Segmentar audienciasDiferencia precios B2C y B2B con etiquetas personalizadas

Implementar en WooCommerce

Para una personalización total, he decidido crear un campo editable en cada producto, para configurarlo a nuestro gusto. Como siempre, la funcionalidad es gratis y la puedes añadir en el functions.php de tu Child Theme o en tu plugin de funcionalidades como explico aquí.

Por producto

// Añadir campos personalizados en la pestaña General del producto
add_action('woocommerce_product_options_pricing', 'agregar_prefijo_sufijo_precio_personalizado');

function agregar_prefijo_sufijo_precio_personalizado() {
    woocommerce_wp_text_input(array(
        'id' => '_custom_price_prefix',
        'label' => 'Prefijo del precio',
        'desc_tip' => true,
        'description' => 'Texto que aparece antes del precio, como por ejemplo "Desde".',
    ));

    woocommerce_wp_text_input(array(
        'id' => '_custom_price_suffix',
        'label' => 'Sufijo del precio',
        'desc_tip' => true,
        'description' => 'Texto que aparece después del precio, como por ejemplo "por unidad".',
    ));
}

add_action('woocommerce_admin_process_product_object', 'guardar_prefijo_sufijo_precio_personalizado');

function guardar_prefijo_sufijo_precio_personalizado($product) {
    if (isset($_POST['_custom_price_prefix'])) {
        $product->update_meta_data('_custom_price_prefix', sanitize_text_field($_POST['_custom_price_prefix']));
    }
    if (isset($_POST['_custom_price_suffix'])) {
        $product->update_meta_data('_custom_price_suffix', sanitize_text_field($_POST['_custom_price_suffix']));
    }
}

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

function mostrar_prefijo_sufijo_en_precio($price, $product) {
    $prefix = $product->get_meta('_custom_price_prefix');
    $suffix = $product->get_meta('_custom_price_suffix');

    if (!empty($prefix) || !empty($suffix)) {
        $price = sprintf('%s %s %s', esc_html($prefix), $price, esc_html($suffix));
    }

    return $price;
}

Ahora en los Datos del producto, en general verás el siguiente campo a editar:

prefijo sufijo precio woocommerce

Obteniendo el siguiente resultado:

anadir texto antes precio woocommerce

Por categoría

Puede resultar tedioso hacerlo producto por producto, si quieres aplicarlo solo a una categoría, te dejo aquí un código para crearlo desde la edición de categorías. En este caso añado un check por si no quieres mostrar el sufijo y prefijo en el catálogo, solo en los productos.

add_action('product_cat_add_form_fields', 'campos_personalizados_categoria_precio', 10);
add_action('product_cat_edit_form_fields', 'campos_personalizados_categoria_precio_edit', 10, 2);

function campos_personalizados_categoria_precio() {
    ?>
    <div class="form-field">
        <label for="precio_prefix">Prefijo del precio</label>
        <input type="text" name="precio_prefix" id="precio_prefix" />
        <p class="description">Texto antes del precio para todos los productos de esta categoría.</p>
    </div>
    <div class="form-field">
        <label for="precio_suffix">Sufijo del precio</label>
        <input type="text" name="precio_suffix" id="precio_suffix" />
        <p class="description">Texto después del precio para todos los productos de esta categoría.</p>
    </div>
    <div class="form-field">
        <label><input type="checkbox" name="ocultar_en_listado" value="yes" /> Ocultar en archivos, carrito y checkout</label>
        <p class="description">Si se marca, no se mostrará el prefijo y sufijo en páginas de archivo, carrito ni checkout.</p>
    </div>
    <?php
}

function campos_personalizados_categoria_precio_edit($term, $taxonomy) {
    $prefix = get_term_meta($term->term_id, 'precio_prefix', true);
    $suffix = get_term_meta($term->term_id, 'precio_suffix', true);
    $ocultar = get_term_meta($term->term_id, 'ocultar_en_listado', true);
    ?>
    <tr class="form-field">
        <th scope="row" valign="top"><label for="precio_prefix">Prefijo del precio</label></th>
        <td>
            <input type="text" name="precio_prefix" id="precio_prefix" value="<?php echo esc_attr($prefix); ?>" />
            <p class="description">Texto antes del precio para todos los productos de esta categoría.</p>
        </td>
    </tr>
    <tr class="form-field">
        <th scope="row" valign="top"><label for="precio_suffix">Sufijo del precio</label></th>
        <td>
            <input type="text" name="precio_suffix" id="precio_suffix" value="<?php echo esc_attr($suffix); ?>" />
            <p class="description">Texto después del precio para todos los productos de esta categoría.</p>
        </td>
    </tr>
    <tr class="form-field">
        <th scope="row" valign="top"><label>Ocultar en archivos, carrito y checkout</label></th>
        <td>
            <input type="checkbox" name="ocultar_en_listado" value="yes" <?php checked($ocultar, 'yes'); ?> />
            <p class="description">Si se marca, no se mostrará el prefijo y sufijo en páginas de archivo, carrito ni checkout.</p>
        </td>
    </tr>
    <?php
}

add_action('edited_product_cat', 'guardar_campos_categoria_precio', 10, 2);
add_action('create_product_cat', 'guardar_campos_categoria_precio', 10, 2);

function guardar_campos_categoria_precio($term_id, $tt_id) {
    update_term_meta($term_id, 'precio_prefix', sanitize_text_field($_POST['precio_prefix'] ?? ''));
    update_term_meta($term_id, 'precio_suffix', sanitize_text_field($_POST['precio_suffix'] ?? ''));
    update_term_meta($term_id, 'ocultar_en_listado', isset($_POST['ocultar_en_listado']) ? 'yes' : 'no');
}

add_filter('woocommerce_get_price_html', 'mostrar_prefijo_sufijo_por_categoria', 20, 2);

function mostrar_prefijo_sufijo_por_categoria($price, $product) {
    if (is_admin()) return $price;

    $categories = wp_get_post_terms($product->get_id(), 'product_cat');

    if (empty($categories)) return $price;

    // Usamos la primera categoría que tenga datos válidos
    foreach ($categories as $cat) {
        $prefix = get_term_meta($cat->term_id, 'precio_prefix', true);
        $suffix = get_term_meta($cat->term_id, 'precio_suffix', true);
        $ocultar = get_term_meta($cat->term_id, 'ocultar_en_listado', true);

        $en_pagina_listado = is_shop() || is_product_category() || is_product_tag() || is_cart() || is_checkout();

        if ($en_pagina_listado && $ocultar === 'yes') {
            return $price;
        }

        if (!empty($prefix) || !empty($suffix)) {
            return sprintf('%s %s %s', esc_html($prefix), $price, esc_html($suffix));
        }
    }

    return $price;
}

Ahora al editar una categoría tendrás estos campos:

sufijo prefijo por categorías woocommerce

Conclusiones

Personalizar cómo se presentan los precios no es un capricho estético: es una herramienta de persuasión silenciosa. Permite guiar la percepción, evitar confusión y, en muchos casos, cerrar una venta que parecía tambalearse.

Y lo mejor: no necesitas instalar otro plugin que ralentice tu web. Solo necesitas intención… y este pequeño truco.

¿Quieres llevar esta idea más lejos —mostrar el prefijo y sufijo también en el carrito, checkout o correos automáticos? Déjamelo en comentarios. Hay muchas formas de vender, pero las mejores son las que nadie nota… excepto en el resultado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)

Especialista en Comercio electrónico con Woocommerce. Te ayudo a crear, gestionar y publicitar tu Ecommerce en función de tu sector y público objetivo. Puedes encontrarme en Diegol.top

¿Necesitas ayuda con este tutorial? Mándame un correo y te resuelvo todas las dudas!


Ver servicios Curso de WooCommerce

También puedes realizar una donacion para seguir apoyando la salida de nuevos tutoriales y actualizaciones

Reader Interactions

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *