Deshabilite el botón Agregar al carrito según el estado de stock personalizado del producto WooCommerce

2 minutos de lectura

Actualmente en woocommerce, botón agregar al carrito deshabilitado, si el estado del stock es out of stock. Agrego nuevo estado de stock con la etiqueta Discontinued product mediante el uso woocommerce_product_stock_status_optionsahora estoy buscando una manera de tratar este producto como si estuviera agotado.

Ya que creo que es mejor separar entre un producto que ya no se produce y un producto que se produjo y está disponible en otra tienda pero no está en stock.

Deshabilite el boton Agregar al carrito segun el estado de
LoicTheAztec

Puede usar lo siguiente para deshabilitar el botón Agregar al carrito en función de un estado de stock personalizado (donde reemplazará custom_status_slug por su slug de estado personalizado):

add_filter('woocommerce_is_purchasable', 'filter_is_purchasable_callback', 10, 2 );
add_filter('woocommerce_variation_is_purchasable', 'filter_is_purchasable_callback', 10, 2 );
function filter_is_purchasable_callback( $purchasable, $product ) {
    if ( $product->get_stock_status() === 'custom_status_slug' ) {
        return false;
    }

    return $purchasable;
}

El código va en el archivo functions.php del tema secundario activo (o tema activo). Probado y funciona.

  • Gracias LoicTheAztec, soluciono mi problema. Ya que quiero aprenderlo mejor, ¿podría decirme sobre el número que menciona en add_filter? porque mencionas 10, 2?

    usuario14580373

    23 de enero de 2021 a las 8:41

  • El último número (2) es el número de argumentos (variables) que usamos de la función enganchada (obligatorio cuando hay más de uno) y 10 es la prioridad de enganche predeterminada (obligatorio cuando especifica el número de argumentos).

    – LoicTheAztec

    23 de enero de 2021 a las 10:07


  • ¡Gracias por esto! Funciona muy bien con todas las guías en las que agrega su propio estado de existencias, es extraño que no forme parte de esas guías.

    – Federico

    12 de abril de 2021 a las 8:22

Propongo una solución que muestra el estado del stock en la página del producto pero no el botón ‘agregar al carrito’

add_filter('woocommerce_product_is_in_stock', 'filter_is_in_stock_callback', 10, 2 );
function filter_is_in_stock_callback( $stock, $product ) {
    if ( $product->get_stock_status() === 'custom_status_slug' ) {
        return false;       
    }
    return $stock;
}

Gracias por la primera respuesta 🙂

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad