⚡ Desde cero hasta que sepas hacerlo por tu cuenta.

EMPEZAR AQUÍ

Snippets Woocommerce – Potencia tu Tienda Online sin necesidad de Plugins adicionales

Artículo actualizado el 27 de octubre de 2024

Tiempo de Lectura: 13 minuto(s)

Un snippet es un fragmento de código que se inserta en tu tienda online o sitio web con WordPress para realizar pequeñas personalizaciones o agregar funcionalidades específicas.

Para una tienda online en WooCommerce, los snippets son esenciales porque brindan flexibilidad sin sobrecargar el sitio con plugins adicionales, lo cual puede afectar el rendimiento y la seguridad de la tienda. Además, permiten a los administradores de la tienda ajustar pequeños detalles del funcionamiento de WooCommerce para mejorar la experiencia del cliente o personalizar el sitio según sus objetivos comerciales, sin depender completamente de soluciones externas.

Para realizar este tutorial correctamente necesitas:

  • Tienda Online con Woocommerce actualizado a su última versión
  • Plugin Gratis Code Snippets (lo puedes descargar más abajo)
  • Muchas ganas de mejorar tu tienda online

Plugin necesario para seguir el tutorial (es gratis):

Modificar el mensaje de «Añadir al carrito»

add_filter( 'woocommerce_product_single_add_to_cart_text', 'custom_add_to_cart_text' );
function custom_add_to_cart_text() {
    return __( 'Realizar Pedido', 'woocommerce' );
}

Mostrar ahorro de dinero para productos en oferta (Para productos simples y variables)

add_action( 'woocommerce_single_product_summary', 'show_discount_amount_for_variable_and_simple_products', 15 );
function show_discount_amount_for_variable_and_simple_products() {
    global $product;

    if ( $product->is_on_sale() ) {
        if ( $product->is_type( 'variable' ) ) {
            // Para productos variables
            $available_variations = $product->get_available_variations();
            $min_regular_price = $product->get_variation_regular_price( 'min', true );
            $min_sale_price = $product->get_variation_sale_price( 'min', true );

            if ( $min_regular_price && $min_sale_price ) {
                $savings = $min_regular_price - $min_sale_price;
                echo '<p style="color: green;">¡Ahorra desde ' . wc_price( $savings ) . ' en este producto!</p>';
            }
        } else {
            // Para productos simples
            $regular_price = $product->get_regular_price();
            $sale_price = $product->get_sale_price();
            $savings = $regular_price - $sale_price;
            echo '<p style="color: green;">¡Comprando hoy ahorras: ' . wc_price( $savings ) . '!</p>';
        }
    }
}

Permitir insertar máximo X cantidad de digitos en campo «teléfono» en Woocommerce

add_filter( 'woocommerce_checkout_fields', 'bbloomer_checkout_fields_custom_attributes', 9999 );
 
function bbloomer_checkout_fields_custom_attributes( $fields ) {
   $fields['billing']['billing_phone']['maxlength'] = 10;
   return $fields;
}

Ocultar campos del Checkout si el producto es «virtual» o «descargable»

add_filter( 'woocommerce_checkout_fields', 'bbloomer_simplify_checkout_virtual' );
  
function bbloomer_simplify_checkout_virtual( $fields ) {
   $only_virtual = true;
   foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
      // Check if there are non-virtual products
      if ( ! $cart_item['data']->is_virtual() ) $only_virtual = false;
   }
   if ( $only_virtual ) {
      unset($fields['billing']['billing_company']);
      unset($fields['billing']['billing_address_1']);
      unset($fields['billing']['billing_address_2']);
      unset($fields['billing']['billing_city']);
      unset($fields['billing']['billing_postcode']);
      unset($fields['billing']['billing_country']);
      unset($fields['billing']['billing_state']);
	   unset($fields['billing']['billing_barrio']);
            add_filter( 'woocommerce_enable_order_notes_field', '__return_false' );
   }
   return $fields;
}

Desactivar otros métodos de envío si el cliente cumple con «Envío Gratis»

/**
 * Hide shipping rates when free shipping is available.
 * Updated to support WooCommerce 2.6 Shipping Zones.
 *
 * @param array $rates Array of rates found for the package.
 * @return array
 */
function my_hide_shipping_when_free_is_available( $rates ) {
	$free = array();
	foreach ( $rates as $rate_id => $rate ) {
		if ( 'free_shipping' === $rate->method_id ) {
			$free[ $rate_id ] = $rate;
			break;
		}
	}
	return ! empty( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'my_hide_shipping_when_free_is_available', 100 );

Permite que solo se puedan insertar números en el campo «teléfono» en Woocommerce

add_action('wp_footer', 'ecommercehints_billing_phone_validation');
function ecommercehints_billing_phone_validation() {
        if ( is_checkout() && ! is_wc_endpoint_url() ) :
    ?>
    <script type="text/javascript">
    jQuery( function($){
        $('#billing_phone').on( 'input focusout', function() {
            var p = $(this).val();
            $(this).val($(this).val().replace(/[^0-9]/g, ''));
        });
    });
    </script>
    <?php
    endif;
}

Mostrar Banner de bienvenida a nuevos visitantes (se muestra una vez)

add_action( 'wp_footer', 'popup_promotion_banner' );
function popup_promotion_banner() {
    ?>
    <div id="promo-banner" style="display: none; position: fixed; bottom: 10px; left: 10px; background: #ffcc00; padding: 20px; z-index: 9999;">
        <p>¡Oferta especial! 10% de descuento en tu primera compra. Usa el código: BIENVENIDO</p>
        <button id="close-banner" style="cursor: pointer;">Cerrar</button>
    </div>
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            if (!localStorage.getItem('promoBannerClosed')) {
                document.getElementById('promo-banner').style.display = 'block';
            }

            document.getElementById('close-banner').onclick = function() {
                document.getElementById('promo-banner').style.display = 'none';
                localStorage.setItem('promoBannerClosed', 'true'); // Guarda en localStorage que el banner se cerró
            };
        });
    </script>
    <?php
}

Limitar venta de producto a X cantidad

add_action( 'woocommerce_check_cart_items', 'limit_specific_product_in_cart' );
function limit_specific_product_in_cart() {
    $product_id = 123; // ID del producto específico
    $max_quantity = 4; // Máxima cantidad permitida para este producto

    $product_quantity = 0;
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        if ( $cart_item['product_id'] == $product_id ) {
            $product_quantity += $cart_item['quantity'];
        }
    }

    if ( $product_quantity > $max_quantity ) {
        wc_add_notice( 'Solo puedes añadir hasta ' . $max_quantity . ' unidades de este producto al carrito.', 'error' );
    }
}

Establece un monto mínimo de compra

add_action( 'woocommerce_checkout_process', 'check_minimum_order_amount' );
add_action( 'woocommerce_before_cart' , 'check_minimum_order_amount' );
function check_minimum_order_amount() {
    $minimum = 100000; // Ajusta el mínimo según tus necesidades y adáptalo a tu moneda
    if ( WC()->cart->total < $minimum ) {
        if( is_cart() ) {
            wc_print_notice(
                sprintf( 'Debe gastar al menos %s para finalizar la compra.' , wc_price( $minimum ) ), 'error'
            );
        } else {
            wc_add_notice(
                sprintf( 'Debe gastar al menos %s para finalizar la compra.' , wc_price( $minimum ) ), 'error'
            );
        }
    }
}

Establece una fecha de entrega estimada en Woocommerce

add_action( 'woocommerce_single_product_summary', 'estimated_delivery_date', 30 );
function estimated_delivery_date() {
    $days_to_delivery = 4; // Cambia "5" por los días de entrega estimados
    $delivery_date = date_i18n( 'j \d\e F \d\e Y', strtotime( "+" . $days_to_delivery . " days" ) );
    echo '<p>🚚 Entrega estimada: <strong>' . $delivery_date . '</strong></p>';
}

Descuento en Primera Compra (funciona solo en usuarios registrados)

add_action( 'woocommerce_cart_calculate_fees', 'apply_first_purchase_discount' );
function apply_first_purchase_discount( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
    $user_id = get_current_user_id();
    
    if ( $user_id && ! wc_get_customer_order_count( $user_id ) ) {
        $discount = 10000; // Define en dinero y moneda local el valor del descuento fijo - uso peso colombiano
        $cart->add_fee( 'Descuento Primera Compra', -$discount );
    }
}

Añadir Texto personalizado en el carrito, ejemplo: Obtén envío gratis a partir de X cantidad

add_action( 'woocommerce_before_cart', 'custom_cart_message' );
function custom_cart_message() {
    echo '<p style="text-align: center; color: #ff0000;">¡Obtén envío gratis en pedidos superiores a $60.000!</p>';
}

Agrega texto en los métodos de pago, ejemplo: ¿Cómo deseas pagar?

add_action( 'woocommerce_review_order_before_payment', 'bbloomer_checkout_payment_options_title' );
 
function bbloomer_checkout_payment_options_title() {
   echo '<h3>¿Cómo deseas pagar?</h3>';
}

Agregar ícono de carrito en botón «añadir al carrito» (CSS)

Importante: Tu Theme o plantilla debe tener integrada la librería de Font Awesome

button.single_add_to_cart_button:before {
   display: inline-block;
   font-family: FontAwesome;
   float: left;
   content: "\f217";
   font-weight: 300;
   margin-right: 1em;
}

Agregar mensaje personalizado en la página de «gracias» en Woocommerce

add_filter( 'woocommerce_thankyou_order_received_text', 'ecommercehints_thank_you_intro_text', 20, 2 );
function ecommercehints_thank_you_intro_text( $thank_you_title, $order ){
return '<br>Gracias por tu compra ' . $order->get_billing_first_name() . '. Por favor confirma tu pedido respondiendo al Whatsapp que te hemos enviado.';
}

Deshabilitar Autocompletado en el Checkout de Woocommerce


add_filter( 'woocommerce_checkout_fields', 'bbloomer_disable_autocomplete_checkout_fields' );
   
function bbloomer_disable_autocomplete_checkout_fields( $fields ) {
    $fields['billing']['billing_address_1']['billing_address_2']['billing_phone']['autocomplete'] = false;
    return $fields;
}

De cero ($ 0) a «Gratis, ideal para productos virtuales o físicos que sean gratuitos

add_filter( 'woocommerce_get_price_html', 'ecommercehints_change_zero_price_display', 10, 2 );
function ecommercehints_change_zero_price_display( $price, $product ) {
if (empty($product->get_price()) || $product->get_price() == 0) { // If price is not entered or set to 0
$price = __( 'Gratis', 'woocommerce' );
}
return $price;
}

Reducir Fortaleza de Contraseña en Woocommerce

add_action ('wp_print_scripts', function () {
	wp_dequeue_script ('wc-password-strength-meter');
}, 10);

CONOCE MIS CURSOS ESPECIALIZADOS EN E-COMMERCE

Compartir:

También te podría gustar

Si hay algo que mata las ventas en una tienda online es la incertidumbre. Cuando un cliente está a punto...
Para continuar con el tutorial debes registrarte en make.com haciendo clic en el botón Para hacer este tutorial necesitas: ¿Qué...
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