Skip Navigation

This is the technical support forum for WPML - the multilingual WordPress plugin.

Everyone can read, but only WPML clients can post here. WPML team is replying on the forum 6 days per week, 22 hours per day.

Our next available supporter will start replying to tickets in about 1.33 hours from now. Thank you for your understanding.

Sun Mon Tue Wed Thu Fri Sat
- 8:00 – 15:00 8:00 – 15:00 8:00 – 15:00 8:00 – 15:00 8:00 – 15:00 -
- 16:00 – 17:00 16:00 – 17:00 16:00 – 17:00 16:00 – 17:00 16:00 – 17:00 -

Supporter timezone: Europe/Rome (GMT+02:00)

This topic contains 7 replies, has 2 voices.

Last updated by Alejandro 2 months, 3 weeks ago.

Assisted by: Alejandro.

Author Posts
July 5, 2024 at 11:01 am #15898068

narcisoF

Background of the issue:
Hola, necesitamos traducir enlaces automáticamente creados desde el tipo de campo link de Advance Custom Fields. Hemos realizado muchas pruebas, y en algunos casos para ciertos campos se comporta bien y para otros no. Si el campo es un wysiwyg en ES (marcado como traducible) y dentro del contenido de ese campo creamos un enlace con el editor de enlaces, al recuperar la traducción y sin tocar el destino del enlace en la traducción, al crearse la página en el idioma de destino (CAT) el hipervínculo de ese enlace apunta automáticamente a la página correspondiente del idioma al que se ha traducido (CAT). Esto no está ocurriendo cuando el tipo de campo es un campo link. El campo link se agrega a un módulo más grande mediante el campo clonar. Digamos que tenemos un grupo de campos llamado Componente botón con un campo Link marcado como traducible. Este grupo de campos "Componente botón" se incorpora en otro grupo de campos "Card" mediante un campo clonar que esta marcado como copiar una vez. Al traducir una página con este tipo de campo y sin tocar el enlace de destino del campo link cuando se crea la página al idioma de destino, el enlace del campo link sigue conservando el hipervínculo del idioma de origen, es decir, ese enlace sigue apuntando a una página ES, en lugar de apuntar a la traducción de la página en CAT. En resumen, no se está traduciendo el destino del enlace de forma automática. Necesitamos resolver este problema puesto que se trata de un sitio web en cuatro idioma con más de 200 páginas por idioma y hacer una traducción manual de todos los enlaces para el tipo de campo link no es sostenible y sobre todo si en el mantenimiento del sitio cada vez que recuperemos una traducción del servicio de traducción la página traducida nos va a pisar los enlaces traducidos manualmente. No sabemos si el problema está como tenemos configurado WPML o como está configurada la opción experto en los ACF y os agradeceríamos que nos pudiese aportar una solución. Por otro lado, también hemos probado con el campo Advanced Link del ACF Extended Pro (soportado por wpml) ya que este tipo de campo devuelve el tipo de post e id de la página enlazara por si pudiese ser el problema, pero en este caso ni aparecen los campos en la traducción y no podemos probar si con este otro tipo de campo si funcionaría la traducción automática.

Symptoms:
El enlace del campo link sigue conservando el hipervínculo del idioma de origen, en lugar de apuntar a la traducción de la página en CAT.

Questions:
¿Cómo podemos configurar WPML para que los enlaces en los campos link de ACF se traduzcan automáticamente?
¿Es posible que la configuración de la opción experto en ACF esté causando este problema?
¿Por qué los campos del tipo Advanced Link del ACF Extended Pro no aparecen en la traducción?
¿Cual sería la configuración correcta?

July 8, 2024 at 8:16 am #15910914

Alejandro
Supporter

Languages: English (English ) Spanish (Español ) Italian (Italiano )

Timezone: Europe/Rome (GMT+02:00)

Hola!

El problema se encuentra en que el link está dentro de un campo "clonar". haz hecho una prueba con un campo LINK directo en un field group y no a través de un campo CLONAR? solo para ver si en este caso funciona.

Ves, el campo clonar es un poco particular ya que debería ser una referencia a otro field group pero a nivel de código actúa también como un campo propio y cuando eso sucede entonces todo el contenido dentro el campo clonar actúa con la preferencia de traducción que se ha hecho en el de clonar.

El problema con eso es que el campo clonar debería tener siempre una preferencia de traducción "copia" y nunca "traducir" y eso a su vez puede crear problemas.

--------------------

Te pido que hagas 2 tests:

1) Crea un campo "link" y agregalo a una página de test (una página nueva). El campo LINK debería estar como "copia". Luego agrega un link interno y uno externo en la página de test.

El link externo debería aparecer en el editor de traducción. el interno no, pero debería traducirse si el link tiene una traducción.

2) Tener el modo "experto" no es siempre lo mejor, así que si puedes haz un sitio de staging y pruebaa cambiar a uno de los otros modos mencionados en esta guía y luego trata de hacer un cambio a la página que tiene el link y trata de traducirla de nuevo para saber si cambia algo.

Avísame que tal te va.

July 8, 2024 at 11:39 am #15912724

narcisoF

Hola Alejandro,

Los dos tests que nos sugieres ya los realizamos en el otro día:

1 - Evidentemente funciona pero necesitamos que funcione dentro de un campo clonar.

2 - También lo hemos probado, de hecho el planteamiento inicial fué ese y luego probamos con el modo experto para intentar tener más control sobre cada campo.

Se nos ocurre dos formas de intentar solucionarlo, te comentamos y nos das tu opinión bajo tu experiencia:

1 - Editar el wpml-config.xml para establecer el atributo translate_link_target en 1 para esos enlaces anidados en el campo clon (como se indica en esta guía https://wpml.org/documentation/support/language-configuration-files/custom-fields-translation-options/) ¿crees que esto podría ser una solución? ¿Podría facilitarnos alguna documentación más detallada para este caso concreto o un ejemplo de como quedaría el marcado de ese xml para este caso.

2 - Si la solución planteada en el punto 1 no es factible, hemos pensado en que tal vez podríamos traducir nosotros los enlaces programaticamente al recibir la traducción, pero para ello necesitaríamos saber si desde wpml se ofrece algún tipo de acción o filtro al que nos podamos enganchar al recibirla del servicio de traducción para así nosotros automatizar la traducción de esos enlaces con nuestro script.

Quedamos a la espera de tu respuesta.

Gracias

July 8, 2024 at 2:00 pm #15913791

Alejandro
Supporter

Languages: English (English ) Spanish (Español ) Italian (Italiano )

Timezone: Europe/Rome (GMT+02:00)

Sobre las soluciones que propones

1) ACF trabaja en un modo diferente, por eso no tenemos documentación detallada para el XML de esos campos ya que esos campos se manejan a través de los field groups. Hacerlos con XML puede que no creen problemas, pero no es algo que tiene tests de nuestra parte porque no es un procedimiento soportado.

Al final, hacerlo con XML es igual a agregar la preferencia de traducción, pero como te mencioné la que tomará ACF es principalmente la del clon, por lo que no creo que te pueda ser muy de ayuda esta opción.

2) Puedes probar a traducir el enlace en modo programático si lo llamas directamente con PHP desde algún template (es decir que no los agregas al front-end a través de un page builder).

En este caso puedes usar wpml_permalink junto a wpml_current_language

---------------

Por casualidad haz probado a agregar el campo clon como "translate once" y luego modificar los links manualmente en la página traducida? imagino que no es lo que quieres pero esa sería otra alternativa.

Avísame si alguna de estas opciones te sirve.

July 11, 2024 at 1:59 pm #15935729

narcisoF

Hola Alejandro,

Gracias por tu respuesta. Supongo que tendremos que ir por la opción 2 que te comentaba, pero el filtro o acción que te pido es otro.

Tanto wpml_current_language como wpml_permalink ya los conocemos.

Necesitamos engancharnos con alguna acción que se disparé cuando recuperamos la traducción que nos envía el servicio de traducción. Para así cada vez que se recupere la traducción se ejecute automáticamente nuestro script para actualizar los enlaces.

¿Te suena que pueda existir algo o sería factible que elevases esta duda a algún técnico de vuestro equipo?

Gracias y un saludo

July 11, 2024 at 2:39 pm #15935912

Alejandro
Supporter

Languages: English (English ) Spanish (Español ) Italian (Italiano )

Timezone: Europe/Rome (GMT+02:00)

He preguntado a nuestros desarrolladores del equipo de integraciones para saber si hay algo así, pero lo dudo.

Principalmente me pregunto una cosa: si usas ACF para los links, eso quiere decir que para mostrarlos en el front-end usas un template. si usas un template, en ese templates tienes el get_field de ACF en algún lugar, cierto?

Si es así, por qué quieres pasar por un hook de cuando regrese un trabajo de un servicio de traducción?

Los hooks que yo te mencioné funcionan más o menos como funciona el plugin Sticky links, primero busca el enlace y luego revisa si ese enlace pertenece a una página con traducción y de allí busca su permalink, es decir, no debes actualizar nada así como lo dices tú y se hace solo con tener el hook en el template (lo que dices tu, podría usar bastantes recursos repitiendo algo en un modo excesivo).

Dices que los conoces y por ende sospecho que has hecho algunos tests sobre esto. me puedes decir por qué no te funciona el método standard del hook en el template? (Así puedo entender mejor la situación y tratar de ver como te podemos ayudar a resolverla).

July 11, 2024 at 5:29 pm #15936879

narcisoF

Hola Alejandro,

Se trata de una página con gran número de visitas. Ya hemos experimentado problemas de rendimiento con las características del servidor actual y preferimos controlar nosotros cuando hacemos el consumo de recursos.

De la forma que planteamos se haría la actualización cuando nosotros recuperemos las traducciones. Esto es una labor muy habitual y recurrente en el mantenimiento ya que hay constantes cambios de contenido. Y al recuperar la traducción grabamos el enlace actualizado (que pasamos por wpml_permalink) con lo que una vez recuperada no habría que realizar ninguna acción más hasta una nueva actualización de dicho contenido.

De la forma que nos propones, el cambio de enlace se hace al descargarse cada página en la visita del usuario y habría tantas solicitudes como enlaces haya en la página y a esto tenemos que sumarle las visitas simultáneas. Por otro lado, de esta forma el enlace nunca quedaría traducido en bbdd y siempre se repetiría el proceso.

Nosotros no tenemos control sobre el hosting y no podemos escalar la maquina para asegurar una buena experiencia de usuario.

Creemos que con nuestro planteamiento el consumo de recursos es menor y puntual.

No se si así te pongo un poco más en contexto.

July 12, 2024 at 9:06 am #15941191

Alejandro
Supporter

Languages: English (English ) Spanish (Español ) Italian (Italiano )

Timezone: Europe/Rome (GMT+02:00)

He preguntado al equipo y lo que mencionas no es posible, lamentablemente, así que la he transformado en una feature request.

Pero les he preguntado también sobre los permalinks y ellos me dijeron que ese hook no debería hacer llamadas siempre en cada visita. Eso entra en cache y no debería afectarte a nivel de rendimiento.

La única cosa extra que te puedo recomendar es que agregues el link como "copy once" o como "translate" (me parece que ya está así, cierto?) y luego modificarla manualmente en la traducción.

Esto es un poco más engorroso pero en ese caso no necesitarías filtros. has ya tratado de hacer esto?

The topic ‘[Closed] Traducción automática de enlaces en los campos Link de ACF’ is closed to new replies.