Ich versuche eine mehrsprachige Website zu erstellen. Und ich habe meine Homepage auf eine statische Seite in meinem WP Administrationsbereich gesetzt.
Diese Homepage-ID ist 2 und ruft die Vorlage front-page.php
auf, wenn ich mich auf der Homepage unter dieser Adresse befinde, z. B. http://examplesite.com/
.
Für eine französische Version habe ich eine neue Umschreiberegel hinzugefügt, damit ich diese URL, http://examplesite.com/fr/
, habe und die gleiche Homepage aufrufe, die ID 2 ist.
add_rewrite_rule(
'^fr/?$',
'index.php?&p=2&lang=fr',
'top'
)
Aber warum ruft es stattdessen index.php
template auf, aber nicht front-page.php
?
Wie kann ich http://examplesite.com/fr/
veranlassen, front-page.php
aufzurufen?
Wie ich in meinem Kommentar darauf hingewiesen habe, ändern Sie in der dortigen Umschreiberegel ?&p=2
in ?page_id=2
. Weil p
zum Abfragen eines Posts verwendet wird (d. H. Eines Posts vom Typ post
). Verwenden Sie also für Pages (d. H. Posts vom Typ page
) page_id
.
Um zu verhindern, dass http://examplesite.com/fr/
zu http://examplesite.com/
umgeleitet wird, können Sie die kanonische Umleitung wie folgt abbrechen:
add_action( 'template_redirect', function(){
if ( is_front_page() ) {
remove_action( 'template_redirect', 'redirect_canonical' );
}
}, 0 );