Creando una estructura de enlace permanente personalizada para idiomas

9

He escrito un sistema multilingüe simple, en el que al hacer clic en el icono de una bandera se establece una cookie de un año que contiene un código de idioma de dos letras (por ejemplo, nl, de, etc.).

Me engancho a la acción wp para leer el valor de la cookie, luego uso los filtros the_title y the_content para mostrar el idioma correcto (los diferentes idiomas se ingresan mediante metaboxes en la página / pantalla de edición posterior).

Todo esto funciona muy bien, excepto que también me gustaría tener enlaces permanentes para cada versión de idioma, por lo que el código de idioma de dos letras se encuentra entre el nombre de dominio y la estructura habitual de enlace permanente. Estoy usando la estructura %postname% permalink, por lo que todo lo siguiente sería válido:

http://example.com/nl/about-us
http://example.com/de
http://example.com/fr/2012/03
http://example.com/es/this-is-a-post-title

Si el idioma actual es el inglés, no se debe usar un código de dos letras (solo será el enlace permanente normal).

Hasta ahora he usado el filtro query_vars para agregar una var de consulta llamada lang , pero eso es todo lo que tengo, no estoy seguro de cuáles son los próximos pasos. Cualquier consejo muy apreciado!

    
pregunta Simon Blackbourn 05.03.2013 - 00:39

2 respuestas

1

Su pregunta es lo suficientemente complicada como para que yo la responda, pero le sugiero que instale el complemento qTranslate . Como dice la descripción del plugin:

  

Elige uno de los 3 modos para hacer que tus URL sean bonitas y fáciles de usar para SEO. - Los   ¿Compatible en todas partes? lang = en, simple y hermoso / en / foo / or nice   y limpio en.yoursite.com

Así que puedes intentar inspeccionar el código del complemento y ver cómo lo hacen, o simplemente utilizarlo.

    
respondido por el Eugene Manuilov 05.03.2013 - 10:50
-1

Este es el filtro que estoy usando:

function em_wpml_dbem_taxonomy_category_slug($option){
$lang = get_bloginfo('language');

if( $lang === 'es-ES' ){
    $option = 'eventos/categorias';
} else {
    $option = 'events/categories';
}
return $option;
}
add_filter('pre_option_dbem_taxonomy_category_slug', 'em_wpml_dbem_taxonomy_category_slug');
    
respondido por el jim.duck 26.08.2015 - 12:39

Lea otras preguntas en las etiquetas