Directorio en la ruta o URL para cada idioma con WPML de WordPress

Directorio en la ruta o URL para cada idioma con WPML de WordPress

WPML es posiblemente el plugin para traducir una web más utilizado en WordPress. A decir verdad resulta extraño ya que de entrada tiene una barrera al tratarse de pago y no es precisamente de los más baratos que puedes encontrar. Sin embargo después de haber trabajado con el algunos años puedo decir que de momento es el más completo con el que me he topado dada la cantidad de opciones y funcionalidades que tiene. Pero este artículo no es para alabarlo, sino para explicar cómo llevar a cabo algo que de entrada el plugin no permite, al menos como veremos a continuación. Así que después de esta contextualización vamos al caso concreto.

Cuando nos enfrentamos al desarrollo de una web con varios idiomas una de las cuestiones a resolver es el aspecto que tendrán las URL y WPML viene preparado para que podamos elegir el formato que deseamos tener en nuestras rutas. Concretamente las opciones son tres:

  • Distintos idiomas en los directorios: esto significa que cada idioma usará un prefijo justo después del directorio de instalación para construir la URL (p.e. /es/ para el español y /en/ para el inglés)
  • Un dominio distinto por cada idioma: en este caso permite asignar un dominio para cada idioma adicional que tengamos (p.e es.misitio.com para español y en.misitio.com para inglés)
  • Nombre del idioma agregado como parámetro: aquí lo que haremos es definir el idioma mediante un parámetro en la ruta del sitio (p.e ?lang=es para español y ?lang=en para inglés)

Pues bien, si nos centramos en la primera opción, la de tener distintos idiomas en los directorios, al seleccionarla nos daremos cuenta que de entrada esa estructura solo se aplica a los idiomas adicionales y no al principal, de modo que éste conservará la URL normal sin indicar el lenguaje en el nos encontramos. Para conseguir que esta función se aplique al principal tendremos que marcar también «Usar directorio para idioma predeterminado» y entonces se aplicará la misma estructura.

Hasta aquí parece que está todo resuelto, pero ahora es cuando viene un paso más que puede descuadrarnos totalmente el proyecto en el que estamos trabajando, todo dependerá de lo que cada uno necesite. La cuestión es que si queremos que el idioma principal muestre en la ruta ese directorio como en los demás (en este caso al hablar de directorio me refiero a uno virtual solo en la URL, ya que físicamente no existe), tendremos que crear una página adicional de inicio necesariamente, sea en HTML o dentro del propio WordPress, que será la que permita al usuario elegir una de las lenguas para navegar a través del portal cuando entre a la página desde la ruta principal. Como podrás comprobar esto supone poner un paso más al usuario antes de poder ver la web y aunque hace diez años era de lo más normal, hoy día se antoja un poco coñazo si me permitís la expresión.

Ante esta situación vamos a hacer una pequeña treta para saltarnos esa página de inicio y que directamente se muestre el portal en el idioma del usuario, aunque si su lengua no está incluida le mandaremos entonces a la que hayamos marcado como predeterminada. Para ello es importante que hayamos marcado la opción alguna de las opciones de redirección como «Redirigir a los visitantes según el idioma del navegador solo si existen traducciones en ese idioma». La idea es que usaremos esa página de inicio que nos obliga a tener WPML para hacer una redirección automática cuando el usuario entre hacia la home del idioma predeterminado y que después el plugin se encargue de detectar el idioma de navegador y mostrar el que corresponda.

Los pasos son los siguientes:

  • Suponiendo que ya has hecho la instalación e incluido los idiomas (si no es así te remito a la documentación oficial, así que paciencia), lo primero será crear una plantilla de página de WordPress donde introduciremos el script que nos permitirá la redirección. Si no estás familiarizado con el sistema de plantillas y su jerarquía no te preocupes porque lo único que tienes que hacer es crear un archivo PHP con el nombre que quieras (p.e. plantilla-redireccion.php) y pegar el código que dejaré a continuación.
    /* Template Name: Plantilla de redirección */ 
    wp_redirect( home_url() ); 
    exit;
    Una vez guardado, debes subirlo por FTP al directorio raíz del tema que estemos usando.
  • El siguiente paso será ir al apartado idiomas del plugin, marcar la opción «Distintos idiomas en los directorios» en caso que no la tengamos activa y después «Usar directorio para idioma predeterminado».
  • Y ahora es el momento de asignar el archivo que hemos creado, por lo que pulsaremos sobre «Una página» en la parte que nos dice «Qué mostrar en la URL raíz» y tras guardar haremos click en el enlace que dice «Crea una página de raíz».
  • Tras hacer esto último se nos abrirá una nueva página de WordPress en donde asignaremos la plantilla subida al servidor, que en este caso veremos con el nombre de «Plantilla de redirección». Si nunca has hecho algo similar, verás que en el lateral derecho de la página hay un módulo llamado «Atributos de página» y dentro un desplegable que dice «Plantilla», ahí es donde debes seleccionar la nueva. Guarda y con esto ya habrás terminado de configurar correctamente el sitio.

Por último, debes tener en cuenta que WordPress usa un sistema de caché para las URL, así que tendrás que actualizarlas si no quieres que te aparezca el molesto error 404.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *