web-dev-qa-db-ja.com

リダイレクトせずにadd_rewrite_ruleを追加する方法

"locations"というカスタム投稿タイプがあります。

私は "スターバックス"という場所があります。これを見るには "/ location/starbucks"に行きます。

私はURLに "coffee-shop"を追加したいので、 "/ location/coffee-shop/starbucks"というパスはブラウザのURLを維持しながら "starbucks"ページをロードします。

私は自分のfunctions.phpにこのコードを追加しました

function add_rewrite_rules()
{
    add_rewrite_rule('^location/([^/]*)/([^/]*)/?','index.php?pagename=$matches[2]','top');
}

add_action('init', 'add_rewrite_rules');

これは正しく "starbucks"ページをロードしますが、URLを "/ location/starbucks"に変更します。

どのようにして "starbucks"ページをロードし、私のカスタムURLを保持することができますか?

2
Corey

書き換え規則では、pagenameは実際にはカスタム投稿タイプのquery_varになります。 query_var => 'something_else'引数でregister_post_typeを使用していない限り、これはカスタム投稿タイプと同じ名前になります。

index.php?locations=$matches[2]
3
TheDeadMedic