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:
- Campos como
ingredientes_producto,instrucciones_producto,recetas_relacionadas_producto, etc. pueden marcarse como Copy o Translate. - Campos técnicos como
codigo_producto,peso_por_caja, etc. se pueden dejar como Copy once.
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.