Close Menu
    Facebook X (Twitter) Instagram
    X (Twitter) Instagram YouTube
    MarCodeMarCode
    • Inicio
    • Geek News
    • WordPress
      • WordPress Plugins
      • WPO
    • WooCommerce
    • Desarrollo Web
    • PHP
    MarCodeMarCode
    Portada » Cómo Crear un Estado de Stock Personalizado en WooCommerce
    WooCommerce

    Cómo Crear un Estado de Stock Personalizado en WooCommerce

    By MarCodeenero 23, 2025No hay comentarios3 Mins Read
    Share Facebook Twitter LinkedIn WhatsApp Copy Link
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link

    Cuando trabajas con WooCommerce, muchas veces surgen necesidades específicas que no se resuelven fácilmente con las opciones predeterminadas. Por ejemplo, podrías querer que ciertos productos no se puedan comprar directamente y, en cambio, invitar al cliente a contactarte. Aunque existen plugins que pueden implementar esta funcionalidad, en este tutorial te mostraré cómo lograrlo directamente con unas cuantas líneas de código.

    Nuestro objetivo será crear un estado de stock llamado “Contáctanos”, que funcione de manera similar al estado de “Agotado”, pero que en lugar de deshabilitar el producto por completo, redirija al usuario a una página de contacto.

    Este estado será compatible con las funciones estándar de WooCommerce y con plugins de terceros.

    Pasos para Crear un Estado de Stock Personalizado

    1. Agregar un Estado de Stock Personalizado en los Ajustes del Producto

    Usaremos el hook woocommerce_product_stock_status_options para añadir un nuevo estado de stock a las opciones del producto.

    add_filter( 'woocommerce_product_stock_status_options', 'agregar_estado_stock_personalizado' );
    
    function agregar_estado_stock_personalizado( $estados_stock ) {
        // Añadimos el nuevo estado en formato slug => nombre
        $estados_stock['contactanos'] = 'Contáctanos';
    
        // Retornamos la lista actualizada de estados
        return $estados_stock;
    }

    Con este código, el estado “Contáctanos” aparecerá en la pestaña de inventario de cada producto en el panel de administración.

    2. Hacer que los Productos con el Estado Personalizado No Sean Comprables

    Para evitar que un cliente pueda añadir al carrito un producto con este estado, usamos el hook woocommerce_product_is_in_stock.

    add_filter( 'woocommerce_product_is_in_stock', 'deshabilitar_compra_contactanos', 10, 2 );
    
    function deshabilitar_compra_contactanos( $disponible, $producto ) {
        if ( 'contactanos' === $producto->get_stock_status() ) {
            $disponible = false;
        }
        return $disponible;
    }

    3. Mostrar un Mensaje Personalizado en la Página del Producto

    Para mostrar un mensaje en lugar del botón “Añadir al carrito”, utilizamos woocommerce_get_availability_text.

    add_filter( 'woocommerce_get_availability_text', 'mensaje_stock_contactanos', 10, 2 );
    
    function mensaje_stock_contactanos( $texto, $producto ) {
        if ( 'contactanos' === $producto->get_stock_status() ) {
            $texto = sprintf(
                'Este producto está disponible solo bajo solicitud. Por favor, <a href="%s">contáctanos</a>.',
                site_url( 'contacto' ) // URL de tu página de contacto
            );
        }
        return $texto;
    }

    4. Modificar el Botón de “Añadir al Carrito” en la Página de Tienda

    Podemos cambiar el texto y el enlace del botón para productos con este estado:

    add_filter( 'woocommerce_product_add_to_cart_text', function( $texto, $producto ) {
        if ( 'contactanos' === $producto->get_stock_status() ) {
            $texto = 'Contáctanos';
        }
        return $texto;
    }, 25, 2 );
    
    add_filter( 'woocommerce_product_add_to_cart_url', function( $url, $producto ) {
        if ( 'contactanos' === $producto->get_stock_status() ) {
            $url = site_url( 'contacto' ); // URL de tu página de contacto
        }
        return $url;
    }, 25, 2 );

    5. Mostrar el Estado Personalizado en la Lista de Productos del Administrador

    Para que el nuevo estado se muestre correctamente en la tabla de productos en el panel de administración, usamos woocommerce_admin_stock_html.

    add_filter( 'woocommerce_admin_stock_html', function( $html_stock, $producto ) {
        if ( 'contactanos' === $producto->get_stock_status() ) {
            $html_stock = '<mark class="onbackorder">Bajo solicitud</mark>';
        }
        return $html_stock;
    }, 25, 2 );

    Con unos pocos hooks y líneas de código, puedes personalizar la experiencia de compra en tu tienda WooCommerce, eliminando la necesidad de plugins adicionales. Este tipo de personalización no solo mejora la experiencia del usuario, sino que también optimiza el rendimiento de tu sitio web.

    Si estás interesado en aprender más sobre desarrollo avanzado en WooCommerce, revisa nuestro post sobre Hooks y Filters en WordPress para profundizar en este tema. ¡Recuerda compartir este artículo si te fue útil!

    Recomendados:

    • Hooks y Filters en WordPress
    • Mejorar el SEO de tus productos en WooCommerce
    • Fundamentos para crear un plugin de WordPress

    Estado de stock personalizado Hooks WooCommerce
    Share. Facebook Twitter LinkedIn WhatsApp Copy Link

    Post Relacionados

    WooCommerce

    Optimización de imágenes en WooCommerce: mejora tu velocidad

    mayo 7, 2025
    WooCommerce

    ¿Qué es WooCommerce y Cómo Se Usa? Introducción para Principiantes

    febrero 27, 2025
    WordPress

    Los Mejores Shortcodes para WordPress y Cómo Usarlos en Tu Sitio Web

    febrero 3, 2025
    Add A Comment
    Leave A Reply Cancel Reply

    Post Recientes

    Optimización de imágenes en WooCommerce: mejora tu velocidad

    mayo 7, 2025

    Optimización de rendimiento en WordPress sin plugins de caché

    mayo 6, 2025

    Novedades en PHP 8.4: mejoras que debes conocer

    mayo 5, 2025
    MarCode
    X (Twitter) Instagram YouTube
    © 2025 Made with 💙

    Type above and press Enter to search. Press Esc to cancel.