Este hilo está resuelto. Aquí tienes una descripción del problema y la solución.
Problema: Si estás enfrentando problemas con las traducciones enlazadas en WPML y observas que al guardar una traducción se genera un nuevo TRID en lugar de conectar con el existente, podría deberse a la política de seguridad 'no-referer' de tu sitio que impide que el navegador envíe la cabecera HTTP_REFERER. Esto hace que WPML no pueda detectar si una solicitud proviene del backend o del frontend, asumiendo incorrectamente que es del frontend y creando un nuevo ID de traducción.
Solución: Si tu versión de WordPress es 6.7 o superior, puedes implementar el siguiente workaround: 1. Añade este código en el archivo functions.php de tu tema activo:
2. Modifica el archivo dentro del plugin WPML: wp-content/plugins/sitepress-multilingual-cms/classes/url-handling/class-wpml-url-http-referer.php, reemplazando la función existente por:
Si esta solución no resuelve tu problema o si la encuentras irrelevante debido a que está desactualizada o no se ajusta a tu caso, te recomendamos abrir un nuevo ticket de soporte. También es altamente recomendable que revises los problemas conocidos y verifiques que tienes instaladas las últimas versiones de los temas y plugins.
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.
He revisado el caso con mis compañeros de segundo nivel, y parece que el problema no está directamente relacionado con WPML, sino con un sistema de caché muy fuerte a nivel de servidor.
Nos comentan que incluso haciendo cambios en archivos como wp-config.php, estos no se reflejan en el sitio, lo que sugiere que podría haber algún tipo de caché del servidor.
¿Podrías, por favor, confirmar qué tipo de caché tiene actualmente activado en el servidor y si sería posible vaciarla o desactivarla temporalmente para que podamos hacer unas pruebas?
Con esa información podremos seguir investigando y avanzar hacia una solución.
Esto es lo que me comentan del segundo nivel:
The error logging is not working. If I add this line error_log('testing log' . __FILE__ . __LINE__); in wp-config.php I don't see this log anywhere. Tried different setting for logging but no file is created or appended.
Nuestro segundo nivel necesita revisar los registros del servidor para poder continuar con la investigación. Nos indican que no tenemos acceso al directorio donde se encuentran los logs (~/logs/precms_inithealth_com.php.error.log).
¿Podrías por favor hacer una de estas dos cosas?
- Habilitar el WP debug log para que los registros se guarden en el directorio wp-content, o
- Darnos acceso al directorio donde se encuentran actualmente los logs.
Con esa información podremos seguir con la revisión del problema.
El problema lo siguen investigando nuestros desarrolladores.
Tu sitio tiene una política de seguridad “no-referer”, lo que impide que el navegador envíe la cabecera HTTP_REFERER. WPML necesita esta información para detectar si una solicitud proviene del backend o del frontend.
Cuando esta cabecera no está disponible, WPML asume que se trata de una solicitud del frontend y crea un nuevo ID de traducción (TRID) en lugar de conectar correctamente la traducción existente.
Nuestros desarrolladores han podido reproducir el mismo problema en una instalación limpia eliminando el HTTP_REFERER, por lo que el origen del error está directamente relacionado con esta configuración.
También han probado una solución temporal, que funciona únicamente con WordPress 6.7 o superior, ya que utiliza un nuevo filtro de Gutenberg que no está disponible en tu versión actual (6.4).
Dime si actualizas a la versión 6.7 para poder pasarte el workaround.
2. Luego, abre este archivo dentro del plugin WPML: wp-content/plugins/sitepress-multilingual-cms/classes/url-handling/class-wpml-url-http-referer.php
Dentro de ese archivo encontrarás la clase WPML_URL_HTTP_Referer, y allí la función:
Con este ajuste, se añade una variable en la petición para que WPML pueda identificar correctamente cuándo la acción proviene del backend, incluso si el servidor no envía el valor HTTP_REFERER.