add_rewrite_rule で、強制的に子階層を追加する方法
-
宜しくお願い致します。
example.com/country/japan/
にアクセスしたときに、
example.com/country/japan/history/
にリダイレクトをかけたいです。つまりカスタム投稿タイプ「country」へアクセスしたとき、デフォルトの子ページ「history」を設定したい、ということになります。
そのために書いた下記のルール設定ですが、リダイレクトが起こらず
example.com/country/japan/
のままです。下記の【これができません】は、どこがおかしいのでしょうか?
(なお、下記をfunctions.phpに書いたのちの、管理画面からのパーマリンク更新は済んでいます。)
// リライトルールを指定 function rewrite_init() { // デフォルトの子ページを指定【これができません】 add_rewrite_rule( '^country/([^/]+)?$', 'index.php?country=$matches[1]/history', 'top' ); // 各子ページへのアクセスを指定 add_rewrite_rule( '^country/([^/]+)/(history|character)?$', 'index.php?country=$matches[1]&countrychild=$matches[2]', 'top' ); } add_action( 'init', 'rewrite_init' ); // 子ページのルールを追加 function rewrite_query_vars_perf( $query_vars ) { $query_vars[] = 'countrychild'; return $query_vars; } add_action( 'query_vars', 'rewrite_query_vars_perf' ); // 子ページで使うテンプレートを指定 function rewrite_template_include_perf( $template ) { if ( get_query_var( 'post_type' ) == 'country' ) { $child = get_query_var( 'countrychild' ); if ( $child == 'history' ) { $template = locate_template( 'post-country-history.php' ); } else if ( $child == 'character' ) { $template = locate_template( 'post-country-character.php' ); } } return $template; } add_filter( 'template_include', 'rewrite_template_include_perf' );
9件の返信を表示中 - 1 - 9件目 (全9件中)
9件の返信を表示中 - 1 - 9件目 (全9件中)
- トピック「add_rewrite_rule で、強制的に子階層を追加する方法」には新たに返信することはできません。