Ya solo nos queda filtra el contenido del post para dejar solo las partes del texto que están en el idioma solicitado.

Filtrando el contenido del post

Ya en el capitulo anterior hemos configurado el filtro “the_content” por lo que solo tenemos que añadir el código necesario para aplicar al texto una expresión regular que buscará las etiquetas que definen los idiomas y que serán pasadas a la función que realiza los cambios, para todo esto voy a usar la función “preg_replace_callback“.

$text=preg_replace_callback("|\[lang='(.*)'\](.*)\[/lang\]|","replace",$text);

La función ”replace” es invocada una vez por cada coincidencia, recibiendo como parámetro cada una de las coincidencias y los grupos detectados por el expresión regular, y tiene que devolver el texto por el que se reemplazaran la coincidencia. Por lo tanto, esta función es muy sencilla, si el idioma (grupo 1) es igual al idioma seleccionado devuelve el texto (grupo 2) y en caso contrario devuelve “vacío”. Aquí el código de la función:

function replace($matchs){
	global $lang;
	$res="";
	if($matchs[1]==$lang) $res=$matchs[2];
	return $res;
}

Y listo… ya esta… ya funciona…  lo podéis ver funcionando en la página de prueba junto con el código fuente completo.

Compartir: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • BarraPunto
  • StumbleUpon
  • TwitThis
  • e-mail