
Muchos negocios no venden en línea con pago inmediato: fabrican a pedido, venden al por mayor con precios negociados, o simplemente prefieren cerrar la venta conversando. Para ellos, WooCommerce sigue siendo útil como catálogo: fichas de producto, categorías, buscador, filtros. Lo que sobra es el carrito y el pago.
Se puede hacer con plugins, pero con un mu-plugin queda más limpio y liviano.
La clave: «no se puede comprar»
WooCommerce pregunta a cada producto si se puede comprar mediante el filtro woocommerce_is_purchasable. Si la respuesta es no, oculta el botón Añadir al carrito en las fichas, en los listados y en los bloques de productos, y rechaza cualquier intento de agregarlo al carrito (incluso con un enlace ?add-to-cart=). Es mucho más robusto que ocultar los botones con CSS.
El mu-plugin
Guárdalo como wp-content/mu-plugins/cwp-catalogo.php y ajusta las tres constantes del principio:
<?php
/**
* Plugin Name: WooCommerce en modo catálogo (Curso WordPress)
*/
const CWP_CAT_WHATSAPP = '56912345678'; // Tu número, con código de país y sin +.
const CWP_CAT_OCULTAR_PRECIOS = false; // true para no mostrar precios.
const CWP_CAT_CATEGORIAS = array(); // Vacío = toda la tienda. O slugs: array( 'mayorista' ).
function cwp_es_catalogo( $producto ) {
if ( empty( CWP_CAT_CATEGORIAS ) ) {
return true;
}
$id = $producto->get_parent_id() ?: $producto->get_id();
return has_term( CWP_CAT_CATEGORIAS, 'product_cat', $id );
}
// 1. Los productos del catálogo no se pueden comprar.
add_filter( 'woocommerce_is_purchasable', function ( $se_puede, $producto ) {
return cwp_es_catalogo( $producto ) ? false : $se_puede;
}, 10, 2 );
// 2. Ocultar precios (opcional).
add_filter( 'woocommerce_get_price_html', function ( $html, $producto ) {
return ( CWP_CAT_OCULTAR_PRECIOS && cwp_es_catalogo( $producto ) ) ? '' : $html;
}, 10, 2 );
// 3. Botón de WhatsApp en la ficha del producto.
add_action( 'woocommerce_single_product_summary', function () {
global $product;
if ( ! $product || ! cwp_es_catalogo( $product ) ) {
return;
}
$mensaje = sprintf( 'Hola, quiero cotizar: %s (%s)', $product->get_name(), get_permalink( $product->get_id() ) );
printf(
'<p><a class="button cwp-whatsapp" href="%s" target="_blank" rel="noopener">Cotizar por WhatsApp</a></p>',
esc_url( 'https://wa.me/' . CWP_CAT_WHATSAPP . '?text=' . rawurlencode( $mensaje ) )
);
}, 31 );
// 4. Si toda la tienda es catálogo, el carrito y el checkout llevan a la tienda.
add_action( 'template_redirect', function () {
if ( empty( CWP_CAT_CATEGORIAS ) && ( is_cart() || is_checkout() ) ) {
wp_safe_redirect( wc_get_page_permalink( 'shop' ) );
exit;
}
} );
Qué hace cada parte:
- Los productos no se pueden comprar: desaparece Añadir al carrito en todo el sitio. En los productos variables, la persona igual puede elegir talla o color para ver la foto, pero no comprar.
- Si activas
CWP_CAT_OCULTAR_PRECIOS, los precios no se muestran (útil para venta mayorista). - En cada ficha aparece un botón que abre WhatsApp con un mensaje ya escrito que incluye el nombre y el enlace del producto.
- Si nadie puede comprar nada, las páginas de carrito y finalizar compra no tienen sentido, así que redirigen a la tienda.
Para aplicarlo solo a una parte del catálogo, pon los slugs de esas categorías en CWP_CAT_CATEGORIAS. El resto de la tienda sigue funcionando normal, con carrito y pago.
Un estilo para el botón
En el CSS adicional:
.cwp-whatsapp {
background: #25d366 !important;
color: #fff !important;
}
Detalles a revisar
- Temas de bloques: si la plantilla de producto de tu tema usa bloques en lugar de los ganchos clásicos, el botón de WhatsApp puede no aparecer. En ese caso, edita la plantilla Producto individual en Apariencia → Editor y agrega un bloque Botones con el enlace, o usa un bloque de shortcode.
- Correos y menús: quita del menú los enlaces a Carrito y Mi cuenta si ya no los necesitas.
- Datos estructurados: si ocultas los precios, WooCommerce deja de incluir la oferta en los datos estructurados del producto. Es lo correcto: no hay que marcar un precio que no se muestra.
Si recibes pedidos por WhatsApp, igual debes cumplir con las obligaciones de cualquier venta: boleta o factura, información clara del producto y condiciones de despacho. El modo catálogo cambia el canal, no las reglas.
¿Usas tu tienda como catálogo? Cuéntanos en el foro cómo cierras las ventas y qué te ha funcionado mejor.





