BEAR - WooCommerce Bulk Editor and Products Manager Professional

El editor masivo de WooCommerce no carga: spinner atascado y errores de DataTables

Que el editor masivo de WooCommerce no cargue se manifiesta de tres maneras: la animación de carga no desaparece nunca, aparece un aviso de DataTables (DataTables warning) y la tabla se queda vacía, o la página aparece pero la tabla está rota o en blanco, a menudo justo después de una actualización. BEAR en sí rara vez cambia de un día para otro, así que la causa suele ser algo que sí cambió: una actualización de un plugin o del tema, un script en caché, un ajuste del servidor o un producto cuyos datos no se pueden enviar al navegador. A continuación se explica cómo carga la página del editor, cómo ver en pocos minutos qué paso ha fallado y la solución para cada caso.

Cómo carga la página del editor

Abrir Productos > BEAR Bulk Editor ejecuta dos pasos:

  1. La página llega con los paneles (Filtros, Edición en masa, Exportar, Ajustes) ya construidos en el servidor, detrás de una animación de carga. Después, los scripts del editor arrancan en el navegador, configuran los paneles y la tabla, y ocultan la animación. Un error de JavaScript durante ese arranque detiene el script antes de llegar a ese punto, y la animación se queda para siempre.
  2. La tabla pide al servidor las filas de la primera página: una petición POST a /wp-admin/admin-ajax.php con action=woobe_get_products. La respuesta es un JSON que empieza por {"draw":. Si es cualquier otra cosa, la biblioteca de la tabla se detiene y muestra su aviso: respuesta JSON no válida (Invalid JSON response) cuando el servidor respondió con algo que no es JSON, error de Ajax (Ajax error) cuando el servidor respondió con un estado de error.

Por tanto, necesitas dos herramientas del navegador, ambas en F12 (Cmd+Option+I en un Mac): la Consola para el paso 1 y la pestaña Red para el paso 2.

Primeras comprobaciones tras una actualización

  • Actualiza BEAR, WooCommerce y WordPress a las versiones actuales. Un BEAR antiguo con un WordPress o WooCommerce nuevos es un motivo frecuente de página rota.
  • Vacía por completo la caché del navegador, no solo las cookies, y recarga con Ctrl+F5. La FAQ cómo restablecer la caché de páginas en el navegador explica cómo. Después purga todas las cachés del servidor: el plugin de caché, la caché del hosting, la CDN.
  • Abre el editor en una ventana privada y en un segundo navegador. Si allí funciona, el problema está en el primer navegador: su caché, una extensión o una redirección almacenada.

Los propios archivos de script de BEAR llevan la versión del plugin en su dirección, así que tras una actualización el navegador normalmente descarga los nuevos. Lo que mantiene vivo el código antiguo es una capa de optimización que combina o minifica los scripts de administración en sus propios archivos, como los plugins del estilo de Autoptimize, los módulos de optimización del servidor o las funciones de Cloudflare, y sigue sirviendo el archivo combinado creado antes de la actualización. Excluye /wp-admin/ de esas funciones.

Errores en la consola del navegador

Recarga la página del editor con la Consola abierta y lee las líneas en rojo. El nombre de archivo a la derecha de cada error indica de quién es ese código.

  • jQuery.growl is not a function, wpColorPicker is not a function y errores similares. BEAR carga sus complementos de jQuery y ya no existen cuando se ejecuta su script. Lo habitual es que otro plugin o el tema cargue una segunda copia de jQuery en las páginas de administración, que sustituye a aquella a la que se habían añadido los complementos, o que un optimizador haya cambiado el orden de los scripts.
  • Errores de un archivo de otro plugin. Un error de script puede detener todos los scripts que se ejecutan después en la página. Corrige o elimina el plugin que lo provoca.
  • Maximum call stack size exceeded. El navegador se quedó sin pila mientras construía la interfaz. Ocurre en tiendas con un número muy grande de taxonomías o términos: cada taxonomía de producto con todos sus términos se dibuja en los paneles Filtros y Edición en masa. Los paneles dibujan las taxonomías sea cual sea la configuración de columnas, así que la solución es mantener las taxonomías pesadas fuera de ellos con los filtros de código explicados en edición masiva de miles de productos de WooCommerce. Van en el tema o en un plugin de fragmentos de código, de modo que funcionan incluso mientras el editor no se abre.

Para averiguar qué plugin es el responsable, desactiva todo excepto WooCommerce y BEAR en una copia de pruebas, confirma que el editor carga y activa los demás uno a uno, revisando la consola cada vez. Aislar plugins durante las ediciones masivas explica cómo mantener un plugin que necesitas fuera de las peticiones del editor sin desactivarlo en todo el sitio.

Aviso de DataTables: Invalid JSON response o Ajax error

En la pestaña Red, escribe admin-ajax en el campo de filtro, recarga y haz clic en la petición cuyo payload contiene woobe_get_products. Lee su estado y su pestaña Respuesta.

Lo que muestra la peticiónQué significa
200, texto o HTML antes de {"draw":Algo imprimió salida dentro de la respuesta: un aviso o advertencia de PHP, o HTML de un plugin. El texto indica el origen.
200 con una respuesta vacíaLas filas no se pudieron codificar como JSON, normalmente por texto con una codificación dañada
200 con solo 0La comprobación de seguridad rechazó la petición: recarga la página; si persiste, la cuenta no tiene la capacidad manage_woocommerce
403Un firewall o una regla de seguridad bloqueó admin-ajax.php
500Un error fatal de PHP al construir las filas
502, 504, o pendiente durante mucho tiempoEl servidor se quedó sin tiempo: demasiadas filas o variaciones en la página, o un plugin lento enganchado a la petición

Salida antes del JSON y errores de PHP

Los avisos impresos en la respuesta provienen de tener WP_DEBUG activado con la visualización activada, o de un plugin que imprime texto en las peticiones de administración. Registra los errores en un archivo en lugar de imprimirlos, en wp-config.php encima de la línea que indica que se deje de editar:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Recarga el editor y abre wp-content/debug.log. El último error fatal de PHP (PHP Fatal error) o advertencia indica el archivo, y su ruta indica el plugin o el tema. Un plugin visor de registros como Error Log Monitor o Query Monitor muestra lo mismo dentro de wp-admin. La guía de depuración de WordPress explica las opciones.

Dos causas aparecen una y otra vez. tamaño de memoria permitido agotado (Allowed memory size exhausted) significa que la petición necesita más memoria PHP de la que le da el servidor; reduce Número predeterminado de productos por página (Default products count per page) en la pestaña Ajustes (Settings) y consulta la sección de memoria del artículo sobre catálogos grandes enlazado arriba. Y un archivo de traducción dañado: cambia el idioma de tu perfil a inglés en Usuarios > Perfil (Users > Profile) y recarga. Si el editor se abre, busca en wp-content/languages/plugins/ archivos llamados woo-bulk-editor- más tu configuración regional. Un archivo allí tiene prioridad sobre la traducción incluida con BEAR; elimínalo y BEAR volverá a la suya.

Una respuesta vacía: un producto rompe la página

Si el editor carga con algunos filtros y falla con otros, o falla en una página concreta de la tabla, un producto contiene texto que no se puede codificar: un título, un atributo o un nombre de categoría con caracteres dañados tras una importación o una migración fallida, o nombres de atributos que aún contienen etiquetas HTML y enlaces de la tienda anterior. Establece 10 filas por página y recorre las páginas; la que falla contiene ese producto. Corrige el texto en la pantalla de edición del propio producto, o en Productos > Atributos (Products > Attributes) y Categorías (Categories), y la tabla vuelve a cargar.

403: admin-ajax.php está bloqueado

Todo el editor funciona a través de admin-ajax.php. Las reglas de .htaccess, el firewall de un plugin de seguridad, un firewall del hosting o una regla de CDN que lo bloquean o le plantean un desafío rompen la tabla y cada guardado. Busca la regla en el registro de lo que lo bloqueó y permite la petición.

Cuando la propia página no se abre

  • 404 en un navegador, funciona en una ventana privada. El navegador ha almacenado una redirección antigua para la dirección del editor. Borrar las cookies no la elimina; borra también las imágenes y archivos en caché. Si falla en todos los navegadores, abre Ajustes > Enlaces permanentes (Settings > Permalinks) y pulsa Guardar cambios (Save Changes) para reconstruir las reglas de reescritura, y revisa los plugins de redirección y las reglas de .htaccess para las direcciones /wp-admin/.
  • No hay elemento BEAR Bulk Editor en el menú Productos. El editor se muestra a los usuarios con la capacidad manage_woocommerce de WooCommerce; los administradores y los gestores de la tienda la tienen por defecto, y otros roles solo si se les ha concedido.
  • La página carga, pero faltan productos variables o los recuentos parecen incorrectos. Algunos temas y plugins modifican las consultas de productos en todas partes, incluidas las peticiones de administración. Las opciones de tema que muestran las variaciones como productos separados, como la de Woodmart, son un ejemplo. Desactiva la opción mientras editas, o pide a los autores del tema que la excluyan de las peticiones AJAX de administración.

Ha cargado, pero falta algo

Algunas cosas parecen rotas y no lo están:

  • El botón Realizar edición en masa (Do Bulk Edit) aparece solo después de marcar al menos un campo en la pestaña Edición en masa (Bulk Edit).
  • El botón Nuevo producto (New Product) del panel de herramientas está oculto mientras hay un filtro activo; restablece el filtro para verlo.
  • Los paneles Filtros, Edición en masa y Exportar se abren con el botón Mostrar: Filtros/Edición en masa/Exportar (Show: Filters/Bulk Edit/Export) situado sobre la tabla.
  • Las columnas que desactivaste en la pestaña Ajustes no se muestran ni se exportan. La documentación del Editor de productos (Products Editor) describe la tabla y su panel de herramientas.

Lista de comprobación

  • BEAR, WooCommerce y WordPress están actualizados; las cachés del navegador y del servidor están vaciadas.
  • La consola no muestra errores en rojo en la página del editor, o se ha encontrado el plugin que los provoca.
  • La petición woobe_get_products devuelve 200 y una respuesta que empieza por {"draw":.
  • WP_DEBUG_DISPLAY está desactivado y debug.log no tiene ningún error fatal desde la última recarga.
  • /wp-admin/ y admin-ajax.php están excluidos de la caché, la optimización de scripts y los desafíos del firewall.

Si las cinco condiciones se cumplen y el editor sigue sin cargar, abre un tema en el foro de soporte de BEAR con la versión de BEAR, los errores de la consola, y el estado y las primeras líneas de la respuesta de woobe_get_products.