Saltar navegación

Este hilo está resuelto. Aquí tienes una descripción del problema y la solución.

Problema:
Si estás intentando traducir un producto al inglés y catalán y recibes un error crítico que dice "Ha habido un error crítico en esta web", y en el debug.log aparece un mensaje de 'TypeError' relacionado con 'array_filter()' y 'woocommerce-multilingual'.
Solución:
El problema puede ser causado por meta_keys incorrectas en la base de datos para algunas variaciones de productos. Para resolverlo, sigue estos pasos:
1. Accede a la base de datos de tu sitio web (puedes usar herramientas como Adminer o PHPMyAdmin).
2. Ejecuta la siguiente consulta SQL, reemplazando '76' con los IDs de las variantes de productos afectadas:

SELECT *<br />FROM wp_postmeta<br />WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_parent = '76' AND post_type = 'product_variation')<br />AND meta_key LIKE "producto_aviso"

3. Elimina los post_meta que devuelve la consulta.
Después de realizar estos pasos, verifica si el problema se ha resuelto.
Si esta solución no parece relevante o si continúas teniendo problemas, por favor, abre un nuevo ticket de soporte.

Este es el foro de soporte técnico de WPML, el plugin multilingüe de WordPress.

Todas las personas pueden leerlo pero solo los clientes de WPML pueden ingresar comentarios. El equipo de WPML responde en los foros 6 días a la semana, 22 horas por día.

Etiquetado: 

Este tema contiene 19 respuestas, tiene 3 voces.

Última actualización por Paola Mendiburu hace 1 año, 1 mes.

Asistido por: Paola Mendiburu.

Autor Entradas
noviembre 30, 2023 en 8:40 am #14959443

francescM-6

Estoy tratando de: traducir un producto al inglés y catalán

URL de (mi) sitio web donde aparece el problema: pilma.com

Yo esperaba ver: las opciones para traducir

En vez de eso, obtuve: un error "Ha habido un error crítico en esta web. Por favor, comprueba la bandeja de entrada del correo electrónico del administrador de tu sitio para obtener instrucciones."

que he localizado en el debug.log con el siguiente mensaje:
[30-Nov-2023 08:29:00 UTC] PHP Fatal error: Uncaught TypeError: array_filter(): Argument #1 ($array) must be of type array, string given in /var/www/vhosts/pilma.com/httpdocs/wp-content/plugins/woocommerce-multilingual/inc/translation-editor/class-wcml-editor-ui-product-job.php:612
Stack trace:
#0 /var/www/vhosts/pilma.com/httpdocs/wp-content/plugins/woocommerce-multilingual/inc/translation-editor/class-wcml-editor-ui-product-job.php(612): array_filter()
#1 /var/www/vhosts/pilma.com/httpdocs/wp-content/plugins/woocommerce-multilingual/inc/translation-editor/class-wcml-editor-ui-product-job.php(490): WCML_Editor_UI_Product_Job->add_custom_field_to_element_data()
#2 /var/www/vhosts/pilma.com/httpdocs/wp-content/plugins/woocommerce-multilingual/inc/translation-editor/class-wcml-editor-ui-product-job.php(84): WCML_Editor_UI_Product_Job->get_data()
#3 /var/www/vhosts/pilma.com/httpdocs/wp-content/plugins/woocommerce-multilingual/inc/translation-editor/class-wcml-translation-editor.php(57): WCML_Editor_UI_Product_Job->__construct()
#4 /var/www/vhosts/pilma.com/httpdocs/wp-includes/class-wp-hook.php(324): WCML_Translation_Editor->fetch_translation_job_for_editor()
#5 /var/www/vhosts/pilma.com/httpdocs/wp-includes/plugin.php(205): WP_Hook->apply_filters()
#6 /var/www/vhosts/pilma.com/httpdocs/wp-content/plugins/sitepress-multilingual-cms/classes/menu/translation-editor/class-wpml-translation-editor-ui.php(342): apply_filters()
#7 /var/www/vhosts/pilma.com/httpdocs/wp-content/plugins/sitepress-multilingual-cms/classes/menu/translation-editor/class-wpml-translation-editor-ui.php(185): WPML_Translation_Editor_UI->filter_the_model()
#8 /var/www/vhosts/pilma.com/httpdocs/wp-content/plugins/sitepress-multilingual-cms/classes/menu/translation-editor/class-wpml-translation-editor-ui.php(91): WPML_Translation_Editor_UI->output_model()
#9 /var/www/vhosts/pilma.com/httpdocs/wp-content/plugins/sitepress-multilingual-cms/classes/menu/translation-queue/class-wpml-translations-queue.php(78): WPML_Translation_Editor_UI->render()
#10 /var/www/vhosts/pilma.com/httpdocs/wp-content/plugins/sitepress-multilingual-cms/classes/class-wpml-translation-management.php(379): WPML_Translations_Queue->display()
#11 /var/www/vhosts/pilma.com/httpdocs/wp-includes/class-wp-hook.php(324): WPML_Translation_Management->translation_queue_page()
#12 /var/www/vhosts/pilma.com/httpdocs/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters()
#13 /var/www/vhosts/pilma.com/httpdocs/wp-includes/plugin.php(517): WP_Hook->do_action()
#14 /var/www/vhosts/pilma.com/httpdocs/wp-admin/admin.php(259): do_action()
#15 {main}
thrown in /var/www/vhosts/pilma.com/httpdocs/wp-content/plugins/woocommerce-multilingual/inc/translation-editor/class-wcml-editor-ui-product-job.php on line 612

noviembre 30, 2023 en 8:58 am #14959507

francescM-6

Tengo otro sitio, un staging, idéntico y también actualizado donde no se reproduce ese error.

noviembre 30, 2023 en 9:02 am #14959545

francescM-6

Más noticias, sólo pasa en los productos con variaciones, en los productos simples está funcionando bien y tampoco pasa en todos los productos, hay unos en los que abre el traductor sin dar problemas y otros en los que da el error.
El error parece estar relacionado con un los productos variables y un campo creado con el ACF. En concreto el campo Aviso. Si dejo el campo vacío no hay problema y abre el editor, si lo relleno con código normal, que funciona en los productos simples, da fallo.

noviembre 30, 2023 en 10:33 am #14960841

Carlos Rojas
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+01:00)

Hola nuevamente,

1.- Le pido que describa paso a paso cómo reproducir el problema en un producto en específico que podamos utilizar como referencia. Si lo desea puede compartir un enlace a un video mostrando los pasos a seguir.

2.- Me gustaría solicitar acceso temporal al sitio (wp-admin y FTP) con el objetivo de ver el problema más de cerca. Su próxima respuesta será privada y en ella encontrará los campos correspondientes a las credenciales solicitadas.

Aunque no realizaré ningún cambio en el sitio siempre es recomendable crear una copia de seguridad del sitio completo antes de compartir las credenciales de acceso.

Saludos,
Carlos

diciembre 1, 2023 en 1:54 pm #14973275

Carlos Rojas
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+01:00)

Muchas gracias por su mensaje.

He intentado acceder al sitio pero me pide que revise un enlace a un email. Le pido que desactive esta verificación para poder acceder al sitio.

diciembre 4, 2023 en 10:38 am #14985331

francescM-6

Buenos días,
Ya deberías poder entrar, he desactivado el plugin que generaba esa petición.
un saludo

diciembre 4, 2023 en 3:08 pm #14988577

Carlos Rojas
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+01:00)

Muchas gracias! Esta vez he podido acceder al sitio.

Le pido que realice los siguientes pasos:
- Cree una copia de seguridad del sitio completo
- Desactive todos los plugins de WPML
- Compruebe si el problema persiste
- Active los plugins de WPML
- Desactive el campo personalizado
- Compruebe si persiste el error al editar los productos variables

Puede decirme el resultado de los pasos anteriores?

diciembre 4, 2023 en 6:17 pm #14990469

francescM-6

Buenas Carlos,
El sitio facilitado es un sitio de pruebas, por lo que puedes trastear lo que quieras, de hecho es un problema extremadamente urgente de solucionar y por desgracia se nos acumulan los días.
Por otra parte he probado a desactivar y volver a activar los plugins de WPML, por lógica no puedo hacer el paso intermedio que comentas, porque si lo desactivo no puedo comprobar que el problema persiste porque no habría posibilidad de traducción.

Si desactivo el campo no hay problema, incluso simplemente dejándolo vacío. Tan sólo pasa en los productos variables, no en los simples, por lo que deduzco que el problema debe ser el plugin. Voy a intentar un rollback y te voy dando más info, pero te agradecería ayuda.

un saludo
Nacho

diciembre 4, 2023 en 6:34 pm #14990663

francescM-6

Por lo que veo volver a una versión anterior no soluciona el problema...
También he desactivado todos los plugins imprescindibles para que siguiera funcionando la web y tampoco ha solucionado el problema.
Sigo necesitando tu ayuda, para identificar el motivo por el que pasa esto...

diciembre 4, 2023 en 6:36 pm #14990671

francescM-6

también he cambiado el tema (por si fuera código propio insertado en el tema) pero sigue fallando exactamente igual.

diciembre 4, 2023 en 6:46 pm #14990751

francescM-6

Más información:

He dejado para tu investigación la siguiente configuración:

- Theme por defecto (divi) (fuera el child theme y sus personalizaciones)
- Configuración mínima de plugins activos (en imagen adjunta)

Verás que sigue fallando cuando quieres traducir un producto con variaciones, te paso url de administración del producto de ejemplo en cuestión:
enlace oculto

Un saludo.
Nacho.

activos.png
diciembre 5, 2023 en 12:50 pm #14997345

Carlos Rojas
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+01:00)

Hola Nacho,

1.- Si elimina este ACF y lo vuelve a crear, persiste el problema?

2.- Cómo muestra el ACF en esa posición en la página del menú?

diciembre 5, 2023 en 1:23 pm #14997841

francescM-6

Buenas de nuevo Carlos,

Acabo de verificar que el problema no ocurre únicamente con el campo "Aviso" sino con cualquiera de los campos creados con el Advanced Custom Fields (incluida la imagen). El error que entrega el sistema lo reporta el plugin de traducción, no el propio ACF. A estas alturas no puedo eliminar esos campos y volverlos a crear.
No entiendo la pregunta número 2, si te refieres a que como se muestra ese campo en el front de la web, es mediante el propio theme divi, que permite leer de una variable de la página, en este caso la que genera el ACF.

Necesito que te involucres un poco más, por favor, sé que no es tu tarea solucionar los problemas de mi sitio, sino de vuestro plugin. Me estás haciendo preguntas que puedes validar perfectamente en el propio backend del que ya tienes el acceso (te he dicho que es un sitio de pruebas y no pasa nada si se "rompe") pero es que esto se está dilatando más tiempo del razonable y no alcanzo a ver la razón.

El error se produce en el propio backend, no tiene porque influir nada de front. Tan sólo puede estar provocado o por el plugin de traducción de woocommerce o el de ACF. Ambos son vuestros y te ruego que me ayudes. En caso de ser necesario derivar esto a otra persona no dudes en hacerlo, pero no veo avance en los últimos 5 dias y estoy poniendo todo lo que puedo de mi parte.

Gracias por adelantado.
Nacho.

diciembre 5, 2023 en 2:54 pm #14999781

Carlos Rojas
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+01:00)

Hola Nacho,
Perdona si le he dado la impresión incorrecta.

Todo indica a que el problema sucede con ciertos productos creados hace un tiempo, probablemente con versiones antiguas de Woocommerce y WPML, y que contienen algúna estructura o información desactualizada en la base de datos. He creado este nuevo producto variable de prueba y puede observar que el problema no aparece: enlace oculto

Solamente traduje el producto a Catalán, para que pueda traducirlo usted mismo a Ingles y comprobar el resultado.

Le pido que edite en el idioma original uno de los productos donde aparece el problema, realice un pequeño cambio en una o más de las variaciones, actualice el producto y si el problema persiste comparta la URL.

diciembre 7, 2023 en 6:34 am #15013143

francescM-6

Buenas de nuevo Carlos,

He editado levemente (he añadido un punto al final de la descripción de cada variación) en el producto cuyo enlace te pasé previamente. enlace oculto y el resultado es el mismo. Sigue fallando. Efectivamente veo que en un nuevo producto creado (en el que has creado tu y en una prueba que he creado yo) el sistema funciona. La cuestión es que necesito que funcione con los productos previos también, que encontréis un fix para el problema o una forma de sortearlo, ya que con los productos creados no está funcionando...