
Cómo ocultar productos sin imagen destacada en WooCommerce
En WooCommerce, tener productos sin imagen destacada puede afectar negativamente la apariencia de tu tienda. Una buena práctica es asegurarte de que todos los productos tengan una imagen representativa… pero si por alguna razón algunos productos no la tienen, puedes ocultarlos del catálogo automáticamente.
En este artículo te enseñaré cómo esconder los productos que no tengan imagen destacada utilizando un pequeño fragmento de código PHP. No necesitas instalar plugins adicionales y lo puedes implementar fácilmente desde el archivo functions.php
de tu tema hijo o mediante un plugin personalizado.
¿Qué vamos a hacer?
La idea es usar el filtro woocommerce_product_query
para modificar la consulta de productos en la tienda y excluir aquellos que no tengan imagen destacada (también conocida como «thumbnail»).
Agrega este código al archivo functions.php
<?php add_action( 'woocommerce_product_query', 'hideProductsWithoutThumbnail' ); function hideProductsWithoutThumbnail( $query ) { $metaQuery = $query->get( 'meta_query' ); if ( ! is_array( $metaQuery ) ) { $metaQuery = []; } $metaQuery[] = [ 'key' => '_thumbnail_id', 'compare' => 'EXISTS' ]; $query->set( 'meta_query', $metaQuery ); }
¿Cómo funciona este código?
- Hook: Usamos
woocommerce_product_query
, que nos permite modificar la consulta antes de que se muestren los productos en la tienda. - Meta query: Añadimos una condición que exige que el producto tenga asignado un valor en el campo
_thumbnail_id
, que es donde WordPress guarda la ID de la imagen destacada. - EXISTS: Solo se incluyen productos donde el campo
_thumbnail_id
existe, es decir, donde hay una imagen destacada asignada.
¿Dónde se ocultarán los productos sin imagen?
Este código afecta la página principal de la tienda, las categorías de productos, etiquetas, resultados de búsqueda dentro del catálogo y cualquier lugar donde se usen consultas estándar de productos. No afecta el panel de administración, por lo que seguirás viendo todos los productos ahí.
¿Y si quiero mostrar un mensaje o imagen alternativa?
Otra opción es no ocultarlos, sino mostrar una imagen por defecto o un aviso. Pero eso ya implicaría editar las plantillas o usar un plugin como Code Snippets junto con lógica personalizada en el archivo content-product.php
.
Mantener la tienda visualmente limpia y profesional es clave. Con este simple fragmento de código puedes asegurarte de que solo se muestren productos con imagen destacada, mejorando la experiencia de navegación para tus clientes.