Por defecto en WooCommerce podemos elegir entre los diferentes tipos de inventario: Disponible, Agotado o En reserva. Esto nos sirve para una tienda online básica, pero si queremos personalizar diferentes tipos para nuestro sector va a ser complicado con los que tenemos por defecto.
Un ejemplo sería en nuestra tienda online tenemos varios productos descatalogados que no vamos a volver a recibir, ya que el fabricante no va a seguir fabricando, pero no queremos borrarlo ya que estamos aplicando nuestra estrategia de productos agotados o cross-selling para aumentar el pedido medio de nuestra tienda online.
En este tutorial vamos a ver cómo crearlo tanto con código cómo con plugin, a gusto de todos.
Índice
Añadir estado del inventario por código
En este caso podemos añadir el siguiente código, que podéis personalizar con el estado que queráis. En este caso añadimos dos nuevos estados: descatalogado y contactar. Este último para tiendas B2B por ejemplo. Recuerda que debes copiarlo en el functions.php de vuestro child theme o bien como explico aquí mediante un plugin.
// ANadir nuevas opciones de estado de las acciones
function filter_woocommerce_product_stock_status_options( $status ) {
// Add new statuses
$status['descatalogado'] = __( 'Descatalogado', 'woocommerce' );
$status['contactar'] = __( 'Contactar', 'woocommerce' );
return $status;
}
add_filter( 'woocommerce_product_stock_status_options', 'filter_woocommerce_product_stock_status_options', 10, 1 );
// Texto de disponibilidad
function filter_woocommerce_get_availability_text( $availability, $product ) {
// Get stock status
switch( $product->get_stock_status() ) {
case 'descatalogado':
$availability = __( 'Descatalogado', 'woocommerce' );
break;
case 'contactar':
$availability = __( 'Contactar', 'woocommerce' );
break;
}
return $availability;
}
add_filter( 'woocommerce_get_availability_text', 'filter_woocommerce_get_availability_text', 10, 2 );
// Para las clases CSS
function filtrar_woocommerce_estados_inventario( $class, $product ) {
// Get stock status
switch( $product->get_stock_status() ) {
case 'descatalogado':
$class = 'invdescatalogado';
break;
case 'contactar':
$class = 'invcontactar';
break;
}
return $class;
}
add_filter( 'woocommerce_get_availability_class', 'filtrar_woocommerce_estados_inventario', 10, 2 );
Con esto conseguiremos el siguiente resultado:

Añadir estados de inventario con un plugin
Si le tenemos miedo al código o queremos algo más personalizado, usaremos el plugin Woo Custom Stock Status, disponible en el repositorio oficial de WordPress. Con este plugins podremos personalizar más nuestros estados de inventario a:
- Hay existencias
- Solo quedan %s existencias
- (se puede reservar)
- Hay %s existencias
- Disponible para reserva
- Agotado
Si no nos gusta alguno y queremos otro, cambiamos las traducciones desde WooCommerce > Ajustes > Inventario personalizado, por ejemplo:
Como podemos ver podemos personalizar los nombre y colores como queramos. Una vez que tenemos esta parte hecha, ya en cada producto podremos ver en los inventarios cual escogemos.
Como siempre cualquier duda nos vemos en comentarios y os deseo un buen inicio de año!
Gracias por el código.
La guinda sería que no mostrase el botón Comprar, pues si está descatalogado… no tendría que dejar comprarlo, al igual que el estado Sin stock, que oculta el botón.
Un saludo
Como inhabilito el boton añadir carrito si lo pongo descatalogado