私は多言語ウェブサイトを作成しようとしています。また、私のホームページをWP管理領域のstaticページに設定しました。
このホームページIDは2で、このアドレスのホームページにいるときはfront-page.php
テンプレートを呼び出します。たとえば、http://examplesite.com/
それで、フランス語版のために、私は新しい書換え規則を追加しました、それで私はこのURL、http://examplesite.com/fr/
を持っています、そしてそれはID 2である同じホームページを呼び出します。
add_rewrite_rule(
'^fr/?$',
'index.php?&p=2&lang=fr',
'top'
)
しかし、なぜ代わりにindex.php
テンプレートを呼び出すのではなくnotfront-page.php
を呼び出すのでしょうか。
http://examplesite.com/fr/
をfront-page.php
を呼び出すようにするにはどうすればよいですか?
私のコメントで指摘したように、そこの書き換え規則で、?&p=2
を?page_id=2
に変更してください。なぜならp
はPost(つまりpost
型の投稿)を問い合わせるために使われるからです。つまり、Pages(つまりpage
型の投稿)の場合は、page_id
を使用します。
http://examplesite.com/fr/
がhttp://examplesite.com/
にリダイレクトされないようにするには、次のように(the)正規リダイレクトをキャンセルします。
add_action( 'template_redirect', function(){
if ( is_front_page() ) {
remove_action( 'template_redirect', 'redirect_canonical' );
}
}, 0 );