wake-up-neo.com

Schreibregel hinzufügen, um front-page.php aufzurufen?

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?

1
laukok

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 );
2
Sally CJ