web-dev-qa-db-fra.com

Ajouter une règle de réécriture pour appeler front-page.php?

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?

1
laukok

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