WPML

Cómo obtener las traducciones de una entrada en WPML

De todos los sistemas que existen para poder ofrecer contenido multiidioma en WordPress, WPML es una solución más completa y sencilla, especialmente en proyectos de tamaño pequeño o mediano. Su integración con prácticamente cualquier tema o plugin popular lo convierte en una herramienta extremadamente versátil, que no requiere conocimientos técnicos avanzados para empezar a funcionar. Permite traducir entradas, páginas, menús, taxonomías, custom post types que hayas creado o cadenas de texto del tema o plugins, todo desde una interfaz intuitiva dentro del propio panel de WordPress.

Además, WPML ofrece un excelente equilibrio entre funcionalidades y facilidad de uso. A diferencia de otras opciones más complejas o enfocadas a proyectos empresariales, WPML (que por cierto viene de WordPress MultiLingual) no abruma al usuario con configuraciones innecesarias, pero sigue permitiendo una traducción profesional, ya sea manual o mediante servicios automáticos o de traductores externos. Su instalación es sencilla y directa y no depende de servicios externos o de arquitecturas algo más complejas como pueda ser una red WordPress.

Por eso mismo es una solución muy popular y me encuentro con bastantes proyectos que lo usan, así que eso unido a su potente API en PHP (que por cierto tiene algunas rarezas en comparación con las API de otros plugins similares), trabajo mucho con sus funciones y aquí os traigo un pequeño código que he estado usando muy a menudo últimamente.

Obtener el ID de las traducciones de un contenido en WordPress

Imaginemos que tenemos un contenido en WordPress, de cualquier tipo, y tenemos su ID y su post_type, y queremos saber las traducciones de ese contenido para hacer cualquier operación sobre ellas: mostrar accesos directos a las mismas, actualizar algún dato en todos a la vez o la operación que necesitéis.

Pues os dejo el código y ahora os lo explico:

$element_type = apply_filters( 'wpml_element_type', 'post_' . get_post_type($post_id) );

$trid = apply_filters( 'wpml_element_trid', null, $post_id, $element_type );

$translations = wpml_get_element_translations( $trid );

foreach ( $translations as $lang_code => $translation ) {
    echo 'Idioma: ' . $lang_code . ' → Post ID: ' . $translation->element_id . '<br>';
}
  • Se supone que tenemos ya el post_id
  • Obtenemos primero el tipo de elemento, que no es el post_type directamente sino una combinación que usa WPML para poder distinguir entre datos de tipo post, taxonomías o cualquier otro tipo
  • Con ese tipo de elemento, podemos pedir el trid del post, si os fijáis en vez de llamar a una función con parámetros se llama a un hook wpml_element_trid, le pasamos un nulo como primer elemento, el que devolvería, el post_id y el tipo de elemento
  • Con este trid, ya obtenemos las traducciones y las recorremos

Y os preguntaréis qué es el trid (que viene de translation identifier). El trid identifica que varios posts (o páginas, o términos…) son traducciones entre sí. Todos los idiomas que son versiones del mismo contenido comparten el mismo trid.

Si queréis verlo gráficamente, sería algo así:

IdiomaPost IDTítulotrid
es101«Nosotros»50
en205«About Us»50
fr309«À propos de nous»50

Esta información realmente se guarda en la base de datos en la tabla wp_icl_translations (o con el prefijo cambiado si está cambiado en vuestra instalación) que tiene esta forma:

IDelement_typeelement_idtridlanguage_codesource_language_code
1post_post10150esNULL
2post_post20550enes
3post_post30950fres

Así a través de esta tabla se relaciona esta información y WPML sabe qué datos mostrar al usuario cuando está visitando la web.

Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.

Almacenamos las IPs desde la que se envían las valoraciones para evitar fraudes

Francisco Javier Carazo Gil

Entradas recientes

¿Qué aporta la integración de Bizum y métodos similares en el proceso de pago?

El comercio electrónico español, que se encuentra en pleno crecimiento y transformación, vive actualmente un…

hace % días

Mejores addons para suscripciones WooCommerce

Compara los mejores addons para suscripciones WooCommerce y elige pagos, membresías y automatizaciones compatibles con…

hace % días

Mejores addons para suscripciones WooCommerce

Compara los mejores addons para suscripciones WooCommerce y elige pagos, membresías y automatizaciones compatibles con…

hace % días

Desarrollo de plugins a medida WordPress

El desarrollo de plugins a medida WordPress resuelve pagos, reservas y flujos propios con integración…

hace % días

Plugin RedSys WooCommerce: cobros sin errores

El plugin RedSys WooCommerce conecta tu tienda con el banco, reduce errores de cobro y…

hace % días

Cómo resolver un rechazo SIS en WordPress

Aprende a resolver rechazo SIS en WordPress: identifica el código, revisa RedSys, pedidos y firmas…

hace % días