Como bien sabéis, o deberías de saber ya, WPML (The WP Multilingual Plugin) es un plugin para WordPress que nos permite transformar nuestra instalación de WordPress o WooCommerce en multilingüe.

Normalmente nos gusta elegir temas que sean totalmente compatibles con WPML para emprender nuevos proyectos, pero en ocasiones nos encontramos con que el tema que el cliente tiene instalado o ha elegido para realizar el proyecto no es compatible con WPML y no está dispuesto a utilizar otro distinto a la hora de afrontar la transformación del sitio web en multilingüe.

Caso concreto

Concretamente esto es lo que nos ha pasado a la hora de traducir un sitio web construido sobre Interface Pro, de Theme Horse.

Este tema no es compatible con WPML, tal y como ellos mismos nos lo indicaron, pero eso no quiere decir que no se pueda hacer totalmente compatible con WPML.

En el caso concreto de este tema hay tres textos que se añaden en las opciones del tema que nos interesaba poder traducir. Dos de ellos aparecen en la página de inicio y el otro en el pie del sitio web.

En el caso de la página de inicio se trata de dos títulos, que en la plantilla se llaman internamente home_slogan1 y home_slogan2, y que muestran el título y el subtítulo del sitio web que queríamos traducir.

En el caso del pie del sitio web, llamado footer_code en el código fuente de la plantilla, se muestra el texto del copyright del sitio web utilizando algunos shortcodes propuestos por los propios desarrolladores.

Añadiendo la compatibilidad

Una vez analizado el código fuente del tema y detectadas las necesidades, nos pusimos manos a la obra.

Para añadir la compatibilidad con WPML que necesitábamos sólo tuvimos que añadir cuatro funciones de código PHP en el archivo functions.php del tema hijo que creamos para afrontar el proyecto. Concretamente añadimos este código PHP:

Paso a paso

Con la primera función, llamada apg_wpml, registramos en el init las tres opciones del tema a las que nos interesa añadir compatibilidad con WPML. Gracias a ella los valores que el tema almacena en la tabla wp_options de la base de datos serán legibles por WPML.

La segunda función, llamada interface_home_slogan, es una función nativa del tema Interface Pro que hemos sobrescrito para poder mostrar los textos traducidos previamente en WPML. Para conseguirlo cambiamos los valores estándar contenidos en $options

['home_slogan1'] y $options['home_slogan1'], por los valores traducidos en WPML que hemos almacenado en las variables $home_slogan1 y $home_slogan2. Estas variables toman los valores estándar en caso de que