Crear una estructura de enlace permanente personalizada para idiomas

9

He escrito un sistema simple en varios idiomas, mediante el cual 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 conecto a la wpacción para leer el valor de la cookie, luego uso los filtros the_titley the_contentpara mostrar el idioma correcto (los diferentes idiomas se ingresan a través de 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 mediante el cual el código de idioma de dos letras se encuentra entre el nombre de dominio y la estructura de enlace permanente habitual. Estoy usando la %postname%estructura de enlace permanente, 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, entonces no se debe utilizar un código de dos letras (solo será el enlace permanente normal).

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

Simon Blackbourn
fuente
1
gracias @ l2aelba, esa respuesta está lo suficientemente cerca de lo que necesito con algunos cambios menores.
Simon Blackbourn
¿Tiene subdominios de este o simplemente un solo sitio web
kennethjfalbous
solo un sitio web
Simon Blackbourn

Respuestas:

1

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

Elija uno de los 3 modos para que sus URL sean bonitas y compatibles con SEO. - ¿Compatible con todas partes? Lang = es, simple y hermoso / es / foo / o agradable y ordenado es.yoursite.com

Por lo tanto, puede intentar inspeccionar el código del complemento y ver cómo lo hacen, o simplemente usarlo.

Eugene Manuilov
fuente
1
gracias por el enlace, echaré un vistazo para ver si puedo deconstruir el código.
Simon Blackbourn
-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');
jim.duck
fuente
2
Agregue una explicación a su respuesta, gracias.
Nicolai