J'essaie de créer un site Web multilingue. Et j’ai défini ma page d’accueil sur page statique dans mon WP admin.
Cet ID de page d'accueil est 2 et appelle le modèle front-page.php
lorsque je suis sur la page d'accueil à cette adresse, par exemple, http://examplesite.com/
.
Donc, pour une version française, j'ai ajouté une nouvelle règle de réécriture, donc j'ai l'URL, http://examplesite.com/fr/
, et son appel, la même page d'accueil qui est l'ID 2.
add_rewrite_rule(
'^fr/?$',
'index.php?&p=2&lang=fr',
'top'
)
Mais pourquoi appelle-t-il plutôt index.php
template mais not front-page.php
?
Comment puis-je faire http://examplesite.com/fr/
pour appeler front-page.php
?
Comme je l'ai souligné dans mon commentaire, dans la règle de réécriture, remplacez ?&p=2
par ?page_id=2
. Parce que p
est utilisé pour interroger une publication (c'est-à-dire une publication du type post
). Donc pour Pages (c.-à-d., Poste du type page
), utilisez page_id
.
Pour éviter que http://examplesite.com/fr/
ne soit redirigé vers http://examplesite.com/
, vous pouvez annuler la redirection canonique, comme ceci:
add_action( 'template_redirect', function(){
if ( is_front_page() ) {
remove_action( 'template_redirect', 'redirect_canonical' );
}
}, 0 );