Tworzenie niestandardowej struktury permalink dla języków

9

Napisałem prosty wielojęzyczny system, w którym kliknięcie ikony flagi ustawia roczny plik cookie zawierający dwuliterowy kod języka (np. Nl, de itp.).

Wchodzę w wpakcję, aby odczytać wartość pliku cookie, a następnie używam filtrów the_titlei, the_contentaby pokazać poprawny język (różne języki są wprowadzane za pomocą metaboksów na ekranie edycji strony / postu).

To wszystko działa świetnie, z wyjątkiem tego, że chciałbym również mieć bezpośrednie linki do każdej wersji językowej, w których dwuliterowy kod języka znajduje się między nazwą domeny a zwykłą strukturą bezpośredniego łącza. Korzystam ze %postname%struktury permalink, więc wszystkie poniższe elementy byłyby poprawne:

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

Jeśli bieżącym językiem jest angielski, nie należy używać dwuliterowego kodu (będzie to zwykły bezpośredni link).

Do tej pory użyłem query_varsfiltru, aby dodać kwerendę o nazwie var lang, ale to daleko, mam, nie jestem pewien, jakie są kolejne kroki. Wszelkie porady bardzo mile widziane!

Simon Blackbourn
źródło
1
dzięki @ l2aelba, ta odpowiedź jest wystarczająco blisko tego, czego potrzebuję z kilkoma drobnymi zmianami.
Simon Blackbourn
Czy masz subdomeny dla tej lub tylko jednej strony
kennethjfalbous
tylko jedna strona internetowa
Simon Blackbourn

Odpowiedzi:

1

Twoje pytanie jest wystarczająco skomplikowane, aby odpowiedzieć sam, ale sugeruję zainstalowanie qTranslatewtyczki. Zgodnie z opisem wtyczki:

Wybierz jeden z 3 trybów, aby Twoje adresy URL były ładne i przyjazne dla SEO. - Wszędzie kompatybilny? Lang = en, prosty i piękny / en / foo / lub nice and schludny en.yoursite.com

Możesz więc spróbować sprawdzić kod wtyczki i zobaczyć, jak to robią, lub po prostu z niej skorzystać.

Eugene Manuilov
źródło
1
dzięki za link, sprawdzę, czy mogę zdekonstruować kod.
Simon Blackbourn,
-1

To jest filtr, którego używam:

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
źródło
2
Dodaj wyjaśnienie do swojej odpowiedzi - dzięki.
Nicolai