web-dev-qa-db-ja.com

Front-page.phpを呼び出すための書き換えルールを追加しますか?

私は多言語ウェブサイトを作成しようとしています。また、私のホームページを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を呼び出すようにするにはどうすればよいですか?

1
laukok

私のコメントで指摘したように、そこの書き換え規則で、?&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 );
2
Sally CJ