Mostrar contenido distinto según el idioma en WordPress

 
Mostrar contenido distinto según el idioma en WordPress

Traducir un blog parece en principio algo sencillo, pero no lo es tanto. No hablo ya del contenido, incluso la plantilla se puede resistir.

Aunque existen plugins como Loco Translate y similares que facilitan esta tarea y hasta plantillas que ya vienen preparadas permitiendo añadir la traducción de casi cualquier cadena, cosa que también se puede hacer con Polylang (aunque suele quedarse muy corto y hay que añadir cadenas a mano), hay cosas que se complican. Por aquí aún peleo con la última cadena que me queda por traducir.

Todo se complica aún más si lo que pretendes es mostrar contenidos y/o diseños distintos en partes concretas dependiendo de cada idioma de tu página.

Esas partes suelen ser la cabecera, el footer o pie de página, las columnas laterales (sidebar) y en menor medida en lugares exactos entre el contenido. Para todo ello hay solución.

Tanto para la cabecera como para el pie de página se puede utilizar Elements, si usas GeneratePress en su versión Pro, y mostrar un diseño diferente para cada idioma ya que los plugins de traducción más populares como WPML y Polylang son compatibles con GeneratePress.

Mostrar contenido distinto según el idioma en WordPress

Es tan simple como crear un gancho (Hook) o bloque de Elements en el idioma deseado, darle el diseño que necesites y ya está listo para ser mostrado en su versión de ese idioma.

Mostrar contenido distinto según el idioma en WordPress 2
En el ejemplo se usa Elements de GeneratePress Pro y Polylang Free para crear un footer en inglés.

Así puedes crear casi cualquier parte de tu blog con un diseño diferente para cada idioma, pero ¿qué pasa si lo que quieres es mostrar además un contenido o diseño distinto y único para cada idioma?

Distinto sidebar según idioma

Con Polylang, crear un sidebar para cada idioma es muy fácil. Solo hay que crear todos los widgets traducidos para cada lengua con el diseño que quieras y asignarles el idioma correspondiente.

Mostrar contenido distinto según el idioma en WordPress 3
Mostrar contenido distinto según el idioma en WordPress 4

Lo de mostrar distinto contenido en el sidebar con condiciones se complica porque con Elements podemos añadir contenido antes y después del sidebar, pero no dentro. Aunque con GeneratePress y/o GenerateBlocks se puede incluso construir un sidebar nuevo desde cero para cada idioma (una solución mucho más completa y recomendada) es más engorroso y tiene mucho más trabajo.

Una alternativa rápida, simple e igualmente efectiva es recurrir a Ad Inserter (basta la versión gratis) para crear widgets con condiciones en el sidebar.

A continuación un ejemplo de cómo crear un widget que sólo se muestre en el sidebar de los post.

Widgets con condiciones

Aunque Ad Inserter está concebido para gestionar y colocar anuncios en casi cualquier parte, cosa que hace a la perfección, se le puede dar utilidad para mostrar cualquier otro contenido.

Mostrar contenido distinto según el idioma en WordPress 5

  1. Se crea un nuevo bloque en Ad Inserter y se le asigna un nombre que describa claramente lo que es y donde se mostrará.
  2. Se añade el contenido a mostrar, que puede ser HTML para un formulario, texto, una imagen con un enlace, un shortcode que tengas registrado, etc.
  3. Se marca "Entradas" (como verás puedes asignarle otras ubicaciones).
  4. En insertar debes dejarlo en "Desactivado" porque en este ejemplo vamos a usarlo como widget.
  5. Se marca Widget y, si quieres usarlo en otros lugares, puedes marcar también "Shortcode y "Función PHP" si necesitas meterlo a saco en algún lugar concreto de tu plantilla.
  6. Guardamos el bloque.

Al volver al área de administración de widgets encontraremos que en el widget de Ad Inserter ya nos aparecerá el bloque que acabamos de crear. Al añadirlo a tu sidebar, este contenido sólo se mostrará en los post. Ahora puedes elegir, por ejemplo, que solo se muestre en la versión inglés.

Mostrar contenido distinto según el idioma en WordPress 6

Cualquier contenido distinto según idioma en cualquier sitio

Ahora ya puedes ir un poco más allá y jugar con las ubicaciones con una gran cantidad de posibilidades y combinaciones para colocar cualquier cosa casi en cualquier otro sitio y que se muestre solo en función del idioma.

Mostrar contenido distinto según el idioma en WordPress 7

Si elegimos una ubicación de las que Ad Inserter nos permite y luego pinchamos sobre "Listas" podemos colocar ese contenido en un montón de puntos con la posibilidad de añadir listas blancas y negras, condiciones y excepciones a placer.

En el ejemplo he configurado que ese contenido se muestre encima de todos los post pero solo en los de la versión en inglés.

Mostrar contenido distinto según el idioma en WordPress 8

A partir de aquí puedes afinar la inserción para que aparezca antes o después del párrafo nº x, antes, entre o al final del contenido, etc y jugar con las opciones como excluir urls, ID´s, categorías, etiquetas o insertar solo en una taxonomía concreta, incluso según el idioma del navegador del visitante usando un simple shortcode. Las combinaciones y posiciones son casi ilimitadas.

Mostrar contenido distinto según el idioma en WordPress 9

Para saber más sobre las ubicaciones y el uso de las listas consulta la documentación de Ad Inserter.


Suscríbete por email para recibir las viñetas y los artículos completos y sin publicidad

Artículos relacionados



Repositorio de documentales sobre dibujantes de cómic y humor gráfico.

Tontolares. Los titulares más gilipollas de la prensa. Envía los tuyos

Tu WordPress puede volar

Servicio de optimización

Suscripción por e-mail

Recibe gratis los artículos completos en tu correo sin publicidad en el momento que se publiquen. Se envía el contenido íntegro del feed sin anuncios a través de un servicio externo.