Durante los últimos días he estado probando algunos plugins para dotar a mi blog de capacidad para tener Post y Pages en varios idiomas, pero ninguno de los que he probado me ha terminado de convencer, así que me he decido a escribir mi propio plugin, y aquí os voy a contar como lo voy haciendo.

Para empezar tenemos que hacer es crear el fichero que contendrá todo el código del plugin, para ello lo mejor es seguir la documentación propia de WordPress.

Lo primero que voy a definir y programar es como indicarle al plugin que lenguaje tiene que usar a la hora de mostrar el post o la página.
En un primer momento pensé en indicarlo re-escribiendo las URL, por ejemplo, si la URL original era:

http://example.com/2008/08/titulo

para indicar que la queríamos en Ingles debería ser:

http://example.com/en/2008/08/titulo

Pero después de hacer algunas pruebas he descartado esta opción por que complicaba el desarrollo con re-direcciones, o por lo menos no he encontrado una forma sencilla de hacerlo.

Por lo tanto voy a usar un parámetro en la URL para indicar el lenguaje, por lo que la URL quedaría de esta forma:

http://example.com/2008/08/titulo?lang=en

 

Para usar este método lo primero que hay que hacer es indicarle a WordPress que tiene que recoger ese parámetro de la URL, para esto, usaremos un filtro llamado “query_vars“.

 

add_filter('query_vars', 'ML_query_vars');
 
function ML_query_vars($qvars){
	$qvars[] = 'lang';
	return($qvars);
}

Cuando WordPress invoca la función “ML_query_vars” asignada a este filtro nos pasa un Array con los parametros/variables que va extraer de la petición, lo único que tenemos que hacer es añadir la cadena “lang” a este array y devolver este array como resultado de la función.

Una vez hecho esto, solo tenemos acceder al objeto “wp_query” para obtener el valor de la variable “lang” cuando se necesite, por ejemplo, cuando se filtra el contenido del post. 

add_filter('the_content', 'filtro');
 
function filtro($text) {
	global $current_user, $wp_query;
	$lang= $wp_query->query_vars['lang'];
        return($text);
}

Continua en “Añadir botones en el editor de WordPress (TinyMCE)

Compartir:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • BarraPunto
  • StumbleUpon
  • TwitThis
  • e-mail