Compatibilidad con WPML

Este plugin ha sido preparado para funcionar correctamente con WPML (WordPress Multilingual Plugin), facilitando la traducción de cadenas de texto y la adaptación de contenidos a distintos idiomas.

No se trata de una integración profunda ni automática, pero se siguen buenas prácticas para que WPML pueda detectar y traducir los elementos relevantes.


Traducción de cadenas de texto

Para que WPML (o Polylang) detecte las cadenas de texto y permita su traducción desde el panel de traducción de cadenas, se utilizan funciones como:

__('Texto a traducir', 'sucesores-content-products');
esc_html__('Texto a traducir', 'sucesores-content-products');

Estas funciones deben usarse en todos los textos visibles en la interfaz de usuario o en el backend (etiquetas, descripciones, botones, etc.).

Es importante definir un dominio de texto único, como 'sucesores-content-products', y mantenerlo consistente en todo el plugin.


Archivos .pot, .po y .mo

WPML puede detectar automáticamente las cadenas sin necesidad de estos archivos, pero para una integración más completa se puede generar un archivo .pot con Poedit o wp i18n make-pot.

Estructura recomendada:

languages/
├── sucesores-content-products.pot
├── sucesores-content-products-es_ES.po
└── sucesores-content-products-es_ES.mo

Traducción de campos personalizados

WPML no traduce automáticamente los campos personalizados (post_meta), pero se puede indicar manualmente qué campos deben ser traducibles desde:

WPML → Settings → Custom Fields Translation

Ahí puedes buscar y marcar los campos que deben sincronizarse o traducirse entre idiomas.

Recomendación:


Uso de idioma actual en el frontend

Para funciones que dependan del idioma activo, se puede detectar así:

$idioma = defined('ICL_LANGUAGE_CODE') ? ICL_LANGUAGE_CODE : 'es';

Esto se utiliza, por ejemplo, para devolver la categoría del producto (cerdo, pollo, vacuno) en el idioma correcto.


Shortcodes compatibles

Los shortcodes del plugin devuelven valores neutros o traducidos según el idioma del contenido actual. Si se usa correctamente get_post_meta() con get_the_ID(), se mostrará el valor correspondiente al post traducido.


Enlaces útiles

07 Elementor y uso dinámico