Erstellen einer benutzerdefinierten Permalink-Struktur für Sprachen


9

Ich habe ein einfaches mehrsprachiges System geschrieben, bei dem durch Klicken auf ein Flaggensymbol ein einjähriger Cookie mit einem aus zwei Buchstaben bestehenden Sprachcode (z. B. nl, de usw.) gesetzt wird.

Ich bin an der wpAktion beteiligt, um den Cookie-Wert zu lesen, und verwende dann die Filter the_titleund the_content, um die richtige Sprache anzuzeigen (die verschiedenen Sprachen werden über Metaboxen auf dem Seiten- / Nachbearbeitungsbildschirm eingegeben).

Dies alles funktioniert hervorragend, außer dass ich auch Permalinks für jede Sprachversion haben möchte, wobei der aus zwei Buchstaben bestehende Sprachcode zwischen dem Domainnamen und der üblichen Permalink-Struktur liegt. Ich verwende die %postname%Permalink-Struktur, daher wären alle folgenden Punkte gültig:

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

Wenn die aktuelle Sprache Englisch ist, sollte kein Zwei-Buchstaben-Code verwendet werden (dies ist nur der normale Permalink).

Bisher habe ich den query_varsFilter verwendet, um eine Abfragevariable namens hinzuzufügen lang, aber das ist weit entfernt. Ich bin mir nicht sicher, was die nächsten Schritte sind. Jeder Rat sehr geschätzt!



1
danke @ l2aelba, diese Antwort ist nah genug an dem, was ich brauche, mit ein paar kleinen Änderungen.
Simon Blackbourn

Haben Sie Subdomains für diese oder nur eine einzige Website
kennethjfalbous

nur eine einzige Website
Simon Blackbourn

Antworten:


1

Ihre Frage ist kompliziert genug, um von mir selbst beantwortet zu werden, aber ich würde Ihnen empfehlen, das qTranslatePlugin zu installieren . Wie die Beschreibung des Plugins sagt:

Wählen Sie einen von 3 Modi, um Ihre URLs hübsch und SEO-freundlich zu gestalten. - Die überall kompatiblen? Lang = en, einfach und schön / en / foo / oder schön und ordentlich en.yoursite.com

Sie können also versuchen, den Code des Plugins zu überprüfen und zu sehen, wie sie es tun, oder ihn einfach überhaupt verwenden.


1
danke für den link, ich werde schauen, ob ich den code dekonstruieren kann.
Simon Blackbourn

-1

Dies ist der Filter, den ich verwende:

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
Bitte fügen Sie Ihrer Antwort eine Erklärung hinzu - danke.
Nicolai
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.