Encontrar productos sin categoría en WooCommerce: imagen, marca o precio
Para encontrar productos de WooCommerce sin categoría, sin marca, sin imagen destacada o sin precio, necesitas un filtro que pregunte "qué falta" en lugar de "qué está definido". La lista de productos estándar no puede hacerlo, y en BEAR la mayoría de estas comprobaciones están a un solo ajuste de distancia en la pestaña Filtros (Filters). A continuación se explica cómo listar cada tipo de producto incompleto, incluidos los casos que requieren un pequeño truco (precios vacíos, productos que no están en oferta), y cómo corregir toda la lista en una sola ejecución masiva una vez que la tienes.
Encontrar productos sin categoría, marca o atributo
Cada taxonomía de la pestaña Filtros (categorías, etiquetas, marcas, atributos, taxonomías personalizadas) tiene un operador junto a sus términos: OR, AND y No incluido (NOT IN). Otros dos operadores, NOT EXISTS y EXISTS, están ocultos por defecto porque ignoran los términos y solo preguntan si el producto tiene algún término de esa taxonomía. Actívalos con una sola línea:
/*
* BEAR: show the NOT EXISTS / EXISTS operators for taxonomies in the Filters tab.
* Child theme functions.php or a code snippets plugin.
*/
add_filter('woobe_filter_taxonomies_exists_show', '__return_true');
Recarga el editor, y en la pestaña Filtros elige NOT EXISTS junto a la taxonomía, deja sus términos vacíos y pulsa Filtrar (Filter). La FAQ sobre el filtrado por asignación de taxonomías muestra dónde está el operador.
- Marcas. NOT EXISTS en Marcas (Brands) (o en la taxonomía de tu plugin de marcas) lista todos los productos sin marca.
- Atributos. NOT EXISTS en un atributo como Color lista los productos que no tienen ningún Color, algo útil antes de añadirlo en masa. Solo funciona con atributos globales; los valores escritos dentro de un único producto son atributos personalizados y no son taxonomías, consulta convertir atributos personalizados en globales.
- Varias carencias a la vez. Los operadores de distintas taxonomías se combinan: NOT EXISTS en marcas más una categoría seleccionada con OR da los productos de esa categoría sin marca. Añade Tipo de producto (Product type) para limitar la lista a productos simples o variables.
Los productos sin categoría suelen estar en Sin categorizar
WooCommerce intenta no dejar ningún producto sin categoría: cada vez que un producto se guarda con la lista de categorías vacía, ya sea desde el editor, una importación o la API REST, se le asigna la categoría predeterminada, que es Sin categorizar (Uncategorized) salvo que se haya renombrado. Por eso la primera lista que hay que revisar no es NOT EXISTS, sino el filtro de categorías con Sin categorizar seleccionada. Después, NOT EXISTS en categorías atrapa los productos que aun así se quedaron sin ninguna, por ejemplo tras eliminar su única categoría, o después de que una herramienta los escribiera en la base de datos sin pasar por WooCommerce.
Productos sin imagen destacada
La pestaña Filtros tiene un desplegable Miniatura (Thumbnail) con Vacío (Empty) y NO vacío (Not empty). Vacío lista los productos que no tienen imagen destacada, y la columna Miniatura muestra el resultado de un vistazo. El filtro comprueba el producto en sí; una variación sin imagen propia muestra la imagen del producto padre en la página del producto, así que rara vez es una carencia que haya que corregir.
Descripciones, SKU y campos personalizados vacíos
Los filtros de texto de la pestaña Filtros tienen un desplegable de comportamiento a su lado, y su última opción, Vacío, encuentra los productos en los que ese campo no tiene ningún texto:
- Contenido del producto (Product content) con Vacío: productos sin descripción.
- Extracto del producto (Product excerpt) con Vacío: productos sin descripción corta.
- El filtro de SKU con Vacío: productos y variaciones sin SKU.
Los campos añadidos en la pestaña Campos meta (Meta Fields) funcionan igual una vez activada su columna. Un campo meta de texto recibe Vacío y NO vacío en su filtro, lo que cubre GTIN, códigos de proveedor y campos similares. Un campo meta numérico recibe un rango desde/hasta; si introduces 0 en ambas casillas, se listan los productos cuyo valor es 0 o no existe.
Precios en cero, precios vacíos y productos que no están en oferta
Los filtros de precio comparan números. Eso hace que los precios en cero sean fáciles de encontrar y que los precios vacíos sean imposibles de encontrar directamente, porque un campo vacío no es un número y nunca cae dentro de un rango.
- Un precio de 0. Introduce
0en precio normal desde (regular price from) y0.01en precio normal hasta (regular price to). La lista muestra los productos simples con precio 0 y los productos variables que tienen una variación con precio 0; activa variaciones (variations) en el panel de herramientas para ver cuáles son esas variaciones. - Un precio rebajado de 0. Lo mismo con Precio rebajado desde (sale price from) y Precio rebajado hasta (sale price to). WooCommerce muestra estos productos como en oferta y gratis; el artículo sobre ofertas en masa explica cómo limpiarlos.
Encontrar lo que no coincide: la etiqueta temporal
Para "ningún precio" y "no está en oferta", filtra por lo contrario, márcalo y luego excluye la marca:
- Crea una etiqueta como tmp-has-price en Productos → Etiquetas.
- En la pestaña Filtros introduce
0en precio normal desde, deja vacío el campo hasta (to) y pulsa Filtrar. Esto lista todo lo que tiene un precio normal, incluidos los productos variables con al menos una variación con precio. - Con el interruptor variaciones desactivado, añade la etiqueta a todos los productos filtrados en la pestaña Edición en masa (Bulk Edit) con añadir al final (append).
- Restablece el filtro y selecciona la etiqueta con No incluido. La lista son los productos sin precio normal: productos simples con el campo de precio vacío y productos variables en los que ninguna variación tiene precio todavía. Los productos agrupados no tienen precio propio y también aparecen aquí.
- Cuando los productos estén corregidos, elimina la etiqueta en Productos → Etiquetas; así se quita de todos los productos a la vez.
Los productos que no están en oferta funcionan igual: filtra por Precio rebajado desde 0.01 con hasta vacío, etiqueta el resultado y luego excluye la etiqueta. La FAQ sobre productos con precio rebajado describe ese filtro. Ten en cuenta que las versiones actuales de WooCommerce conservan el precio rebajado en un producto después de que termine una oferta programada, así que una oferta caducada sigue contando aquí como "tiene precio rebajado"; programar precios rebajados explica el motivo. Un producto variable con una variación en oferta también cuenta como en oferta.
Dos comprobaciones más: SKU en los títulos, inventario sin gestionar
Los títulos que contienen el SKU, algo habitual tras una importación ("Camisa de lino ABC-123"), no se pueden filtrar, porque ningún filtro compara el título de un producto con su propio SKU. No hace falta: en la pestaña Edición en masa marca la fila del título, elige reemplazar (replace), introduce {SKU} junto con el separador que lo precede en tus títulos (un espacio, o - ) como texto a buscar, y deja vacío el reemplazo. {SKU} se sustituye por el SKU de cada producto antes de la búsqueda, de modo que solo cambian los títulos que contienen su SKU. Pruébalo primero con unos pocos productos y comprueba el resultado.
Los productos sin gestión de inventario tienen un estado de inventario pero no una cantidad, así que nunca se agotan por sí solos. La pestaña Filtros no tiene un desplegable para este ajuste, pero el valor se guarda en la clave meta _manage_stock como yes o no. Asocia esa clave en Campos meta como campo de texto, activa su columna y fíltrala con EXACTO (=) (EXACT (=)) y no. Usa el campo meta solo para encontrar los productos; activa la gestión de inventario con la fila Gestionar inventario (Manage stock) de la pestaña Edición en masa, como se describe en el artículo sobre el gestor de inventario.
Corregir la lista en masa
Cuando un filtro muestra exactamente los productos incompletos, la pestaña Edición en masa se aplica a todos ellos; la línea La edición en masa se aplicará a (Bulk editing will be applied to) en la parte superior lo confirma.
- Categorías y marcas. Marca la fila de la taxonomía, elige los términos y selecciona añadir al final, o reemplazar para sacar los productos de Sin categorizar en el mismo paso. El artículo sobre categorías explica cómo mover, añadir y quitar.
- Imágenes. seleccionar miniatura (select thumbnail) en la pestaña Edición en masa asigna la misma imagen a todos los productos filtrados, lo que sirve para una imagen provisional. Las imágenes individuales se asignan en la celda Miniatura de cada fila.
- Precios. Marca la fila del precio normal con establecer nuevo (set new); para las variaciones, activa antes variaciones.
- Descripciones. Consulta edición masiva de descripciones de producto.
Cada ejecución queda registrada en la pestaña Historial (History) y se puede revertir, así que corregir por error la lista equivocada cuesta un solo clic.
Una auditoría rápida del catálogo
- Filtro de categorías con Sin categorizar, y después NOT EXISTS en categorías.
- NOT EXISTS en marcas y en los atributos en los que se apoyan tus filtros.
- Miniatura: Vacío.
- Vacío en descripción, descripción corta y SKU.
- Precio normal de 0 a 0.01, y después la etiqueta temporal para los precios vacíos.
_manage_stockigual ano, si la tienda debe contar el inventario.
Si un filtro devuelve productos que sí tienen el dato, o pasa por alto productos que no lo tienen, publica los ajustes del filtro y un producto de ejemplo en el foro de soporte de BEAR.