Création d'une structure de permalien personnalisée pour les langues

9

J'ai écrit un système multilingue simple, par lequel cliquer sur une icône de drapeau définit un cookie d'un an contenant un code de langue à deux lettres (par exemple nl, de, etc.).

Je me connecte à l' wpaction pour lire la valeur du cookie, puis j'utilise les filtres the_titleet the_contentpour afficher la langue correcte (les différentes langues sont entrées via des métaboxes sur l'écran de modification de page / post).

Tout cela fonctionne très bien, sauf que j'aimerais également avoir des permaliens pour chaque version linguistique, le code de langue à deux lettres se trouvant entre le nom de domaine et la structure de permalien habituelle. J'utilise la %postname%structure de permalien, donc tout ce qui suit serait valide:

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 la langue actuelle est l'anglais, aucun code à deux lettres ne doit être utilisé (ce sera juste le permalien normal).

Jusqu'à présent, j'ai utilisé le query_varsfiltre pour ajouter une requête appelée var lang, mais c'est un exemple que j'ai, je ne sais pas quelles sont les prochaines étapes. Tout conseil très apprécié!

Simon Blackbourn
la source
1
merci @ l2aelba, cette réponse est assez proche de ce dont j'ai besoin avec quelques changements mineurs.
Simon Blackbourn
Avez-vous des sous-domaines pour cela ou juste un seul site Web
kennethjfalbous
un seul site Web
Simon Blackbourn

Réponses:

1

Votre question est suffisamment compliquée pour répondre par moi-même, mais je vous suggère d'installer le qTranslateplugin. Comme le dit la description du plugin:

Choisissez l'un des 3 modes pour rendre vos URL jolies et optimisées pour le référencement. - Le partout compatible? Lang = en, simple et beau / en / foo / ou agréable et soigné en.votresite.com

Vous pouvez donc essayer d'inspecter le code du plugin et voir comment ils le font, ou tout simplement l'utiliser.

Eugene Manuilov
la source
1
merci pour le lien, je vais voir si je peux déconstruire le code.
Simon Blackbourn
-1

Voici le filtre que j'utilise:

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
la source
2
Veuillez ajouter une explication à votre réponse - merci.
Nicolai