⚡ Desde cero hasta que sepas hacerlo por tu cuenta.

EMPEZAR AQUÍ

Cómo Aumentar tus Conversiones en WooCommerce Mostrando Tiempos de Entrega Dinámicos

Si hay algo que mata las ventas en una tienda online es la incertidumbre. Cuando un cliente está a punto de hacer clic en «Añadir al carrito», la pregunta más crítica que pasa por su mente es: «¿Cuándo me va a llegar?»

Si no respondes esa pregunta de forma clara, visual y rápida, corres el riesgo de perder la venta. Muchos dueños de tiendas instalan plugins pesados que ponen lenta su web solo para mostrar un texto genérico. En Aprendamos E-commerce, hacemos las cosas a nivel de ingeniería.

Por eso, he desarrollado un Snippet de código ligero, automatizado y de diseño Premium que puedes aplicar en tu tienda hoy mismo, sin ralentizar tu WooCommerce.

🔥 ¿Qué hace este código por tu tienda?

  • Es Inteligente (Multipaís): No importa si tu tienda opera en Colombia, Chile, México, Perú, Venezuela o España. El código lee automáticamente la Zona Horaria que tengas configurada en tu WordPress (Ajustes > Generales) y calcula la hora exacta local.
  • A prueba de Domingos: El algoritmo calcula las fechas de envío y entrega saltándose automáticamente los días no hábiles (domingos), para que no le prometas a un cliente que su pedido llegará un día que las transportadoras no trabajan.
  • Diseño Premium: Añade una línea de tiempo visual (Confirmación ➔ Envío ➔ Entrega) con un pulso animado en el estado actual que guía el ojo del comprador directo al botón de compra.
  • Cero Mantenimiento: Lo instalas una vez mediante un Hook y se aplica automáticamente a todos los productos de tu catálogo, pasados y futuros.

🛠️ Cómo implementarlo en 3 pasos

  1. Ve a tu panel de WordPress e instala un plugin gratuito para gestionar código como Code Snippets
  2. Crea un nuevo Snippet de tipo PHP.
  3. Copia el siguiente código, pégalo y actívalo.

(¡Ojo a «Configuración» en las primeras líneas! Ahí puedes cambiar los colores HEX para que se vea afín con tu marca y ajustar los días exactos que tarda tu transportadora en entregar).

Implementar detalles como este separa a una tienda amateur de una profesional. ¡Aplica el código, personaliza tus colores y cuéntame en los comentarios o en el grupo de WhatsApp que te pareció!

/**
 * ========================================================================
 * WIDGET: TIEMPOS DE ENTREGA DINÁMICOS PARA WOOCOMMERCE
 * * Autor: Ing. Guillermo Amaya
 * Aporte exclusivo para estudiantes de aprendamosecommerce.com
 * ========================================================================
 */

add_filter('woocommerce_short_description', 'gpa_tiempos_entrega_global_filter', 99);

function gpa_tiempos_entrega_global_filter($short_description) {
    // 1. Evitar que se ejecute fuera de productos
    if ( ! is_product() ) {
        return $short_description;
    }

    // 2.Evitar que se duplique en llamadas AJAX (cambios de variación)
    if ( wp_doing_ajax() ) {
        return $short_description;
    }

    // 3. Asegurar que solo se imprima UNA vez por carga de página
    static $ya_impreso = false;
    if ( $ya_impreso ) {
        return $short_description;
    }
    $ya_impreso = true;

    // =====================================================================
    // ⚙️ ZONA DE CONFIGURACIÓN (Modifica los valores aquí según tu tienda)
    // =====================================================================
    
    $dias_para_enviar  = 1; 
    $dias_min_entrega  = 2; 
    $dias_max_entrega  = 5; 

    $color_principal   = '#D4AF37'; 
    $color_secundario  = '#7DA856'; 
    
    $texto_info_envio  = 'Los tiempos de entrega son estimados. Para ciudades principales, el tiempo de entrega es de 1 a 3 días hábiles. Recibirás tu número de guía por correo electrónico o WhatsApp.';
    
    // =====================================================================
    // ⛔ FIN DE LA CONFIGURACIÓN (No tocar el código de abajo)
    // =====================================================================

    $zona_horaria_wp = wp_timezone_string();
    if ($zona_horaria_wp) {
        date_default_timezone_set($zona_horaria_wp);
    }
    
    $hoy_timestamp = time();

    $sumar_dias_habiles = function($inicio, $dias_a_sumar) {
        $actual = $inicio;
        $agregados = 0;
        while ($agregados < $dias_a_sumar) {
            $actual += 86400; 
            if (date('w', $actual) != 0) { $agregados++; }
        }
        return $actual;
    };

    $fecha_envio    = $sumar_dias_habiles($hoy_timestamp, $dias_para_enviar);
    $entrega_inicio = $sumar_dias_habiles($hoy_timestamp, $dias_min_entrega);
    $entrega_fin    = $sumar_dias_habiles($hoy_timestamp, $dias_max_entrega);

    $meses = ['Jan'=>'ene', 'Feb'=>'feb', 'Mar'=>'mar', 'Apr'=>'abr', 'May'=>'may', 'Jun'=>'jun', 'Jul'=>'jul', 'Aug'=>'ago', 'Sep'=>'sep', 'Oct'=>'oct', 'Nov'=>'nov', 'Dec'=>'dic'];
    $dias = ['Sun'=>'Dom', 'Mon'=>'Lun', 'Tue'=>'Mar', 'Wed'=>'Mié', 'Thu'=>'Jue', 'Fri'=>'Vie', 'Sat'=>'Sáb'];

    $formato_fecha = function($t) use ($meses) { return date('d', $t) . ' ' . $meses[date('M', $t)]; };
    $formato_dia   = function($t) use ($dias) { return $dias[date('D', $t)]; };

    $hoy_txt       = $formato_fecha($hoy_timestamp);
    $envio_txt     = $formato_fecha($fecha_envio);
    $rango_entrega = $formato_fecha($entrega_inicio) . ' - ' . $formato_fecha($entrega_fin);
    $rango_dias    = $formato_dia($entrega_inicio) . ' a ' . $formato_dia($entrega_fin);

    ob_start();
    ?>
    <style>
        .gpa-delivery-box { font-family: 'Inter', sans-serif; background: #ffffff; border: 1px solid #f0f0f0; border-radius: 12px; padding: 20px; margin: 25px 0 10px 0; box-shadow: 0 4px 15px rgba(0,0,0,0.03); width: 100%; clear: both; }
        .gpa-del-header { font-family: 'Montserrat', sans-serif; color: <?php echo $color_principal; ?>; font-size: 14px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 20px; display: flex; align-items: center; }
        .gpa-del-header::before { content: ''; margin-right: 8px; font-size: 16px; color: <?php echo $color_secundario; ?>; }
        .gpa-del-steps { display: flex; justify-content: space-between; margin-bottom: 20px; position: relative; }
        .gpa-del-steps::before { content: ''; position: absolute; top: 25px; left: 15%; right: 15%; height: 2px; background-color: #f0f0f0; z-index: 1; }
        .gpa-del-step { display: flex; flex-direction: column; align-items: center; text-align: center; z-index: 2; flex: 1; }
        .gpa-del-icon { width: 50px; height: 50px; border-radius: 50%; background: #fff; display: flex; align-items: center; justify-content: center; margin-bottom: 10px; border: 2px solid #e0e0e0; transition: all 0.3s ease; }
        .gpa-del-step.active .gpa-del-icon { border-color: <?php echo $color_principal; ?>; box-shadow: 0 0 15px <?php echo $color_principal; ?>33; }
        .gpa-del-icon svg { width: 22px; height: 22px; fill: #333; transition: all 0.3s ease; }
        .gpa-del-step.active .gpa-del-icon svg { fill: <?php echo $color_principal; ?>; animation: gpa-cart-pulse 2s ease-in-out infinite; }
        @keyframes gpa-cart-pulse { 0% { transform: scale(1) translateY(0); } 50% { transform: scale(1.08) translateY(-3px); } 100% { transform: scale(1) translateY(0); } }
        .gpa-del-title { font-family: 'Montserrat', sans-serif; font-size: 11px; color: #888; font-weight: 700; margin-bottom: 4px; text-transform: uppercase; }
        .gpa-del-step.active .gpa-del-title { color: <?php echo $color_principal; ?>; }
        .gpa-del-date { font-size: 14px; font-weight: 700; color: #333; margin-bottom: 5px; }
        .gpa-del-badge { background-color: #f5f5f5; color: #888; font-size: 11px; padding: 3px 10px; border-radius: 20px; }
        .gpa-del-step.active .gpa-del-badge { background-color: <?php echo $color_principal; ?>1A; color: <?php echo $color_principal; ?>; font-weight: 600; }
        .gpa-del-info { background-color: #fcfcfc; border-left: 3px solid <?php echo $color_principal; ?>; padding: 12px 15px; border-radius: 0 8px 8px 0; font-size: 12px; color: #666; line-height: 1.5; }
        .gpa-del-info strong { color: <?php echo $color_principal; ?>; font-family: 'Montserrat', sans-serif; }
    </style>

    <div class="gpa-delivery-box">
        <div class="gpa-del-header">ENTREGA ESTIMADA</div>
        
        <div class="gpa-del-steps">
            <div class="gpa-del-step active">
                <div class="gpa-del-icon">
                    <svg viewBox="0 0 24 24"><path d="M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z"/></svg>
                </div>
                <div class="gpa-del-title">Haces el pedido</div>
                <div class="gpa-del-date">Hoy</div>
                <div class="gpa-del-badge"><?php echo $hoy_txt; ?></div>
            </div>

            <div class="gpa-del-step">
                <div class="gpa-del-icon">
                    <svg viewBox="0 0 24 24"><path d="M20 8h-3V4H3c-1.1 0-2 .9-2 2v11h2c0 1.66 1.34 3 3 3s3-1.34 3-3h6c0 1.66 1.34 3 3 3s3-1.34 3-3h2v-5l-3-4zM6 18.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm13.5-9l1.96 2.5H17V9.5h2.5zm-1.5 9c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"/></svg>
                </div>
                <div class="gpa-del-title">Enviamos</div>
                <div class="gpa-del-date"><?php echo $envio_txt; ?></div>
                <div class="gpa-del-badge">Día hábil</div>
            </div>

            <div class="gpa-del-step">
                <div class="gpa-del-icon">
                    <svg viewBox="0 0 24 24"><path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg>
                </div>
                <div class="gpa-del-title">Recibes</div>
                <div class="gpa-del-date"><?php echo $rango_entrega; ?></div>
                <div class="gpa-del-badge"><?php echo $rango_dias; ?></div>
            </div>
        </div>

        <div class="gpa-del-info">
            <strong>INFORMACIÓN DE ENVÍO:</strong> <?php echo $texto_info_envio; ?>
        </div>
    </div>
    <?php
    $caja_html = ob_get_clean();
    return $short_description . $caja_html;
}
Curso Gratuito

Domina WordPress y WooCommerce desde cero

Aprende a construir tiendas online profesionales y rentables. Accede ahora al curso más completo con +20 horas de contenido práctico paso a paso.

Ver Curso en YouTube

Compartir:

    1 Comentario

  1. jaime hernandez
    9 de marzo de 2026
    Responder

    Buen dia , acabo de instalar el codigo y queda super bien, genera mas confianza, gracias por la informacion💯✅

Deja una respuesta

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

También te podría gustar

Para continuar con el tutorial debes registrarte en make.com haciendo clic en el botón Para hacer este tutorial necesitas: ¿Qué...
Artículo actualizado el 27 de octubre de 2024 Un snippet es un fragmento de código que se inserta en tu...
  • 27 de octubre de 2024
Dropshipping: Una Guía Completa sobre esta Estrategia de Negocios En el mundo del comercio electrónico, el dropshipping se ha convertido...
  • 20 de febrero de 2024