Snippets para Woocommerce

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

Por Diegol

Actualizado el 24 de octubre de 2026·7 min de lectura

Opciones de lectura
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)
Diegol
Escrito porDiegolEspecialista 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.topSobre míLinkedInYouTube

Deja una respuesta

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

  +  75  =  81