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é!



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.


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');

2
Veuillez ajouter une explication à votre réponse - merci.
Nicolai
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.