質問: $post->post_type ) { return home_url( '/animal/dog/' . $post->ID .'/'); } else { return $link; } } //画面はトップページを表示。URLはそのままhttp://hoge.com/animal/dog/1498/ add_action( 'init', 'my_rewrite_rules' ); function my_rewrite_rules() { add_rewrite_rule('animal/dog/([0-9]+)?$', 'index.php?p=$matches[2]', 'top'); add_rewrite_rule('animal/dog/?$', 'index.php?post_type=dog', 'top'); } ``` ### 補足 1) /animal/ディレクトリはwpではなく、animalディレクトリがドキュメントルート下に実在している状況で、以下のような構成になっています / /animal/index.html /wp/(wordpressディレクトリ) 2) /animal/dog でアーカイブページの出力(archive-dog.php)は成功しています ### 補足情報(FW/ツールのバージョンなど) wordpressは4.5.2です どうぞよろしくお願いします
回答: 解決しました まず、 ``` add_rewrite_rule('^animal/dog/([0-9]+)/?$', 'index.php?p=$matches[2]', 'top'); ``` の部分は以下が正解でした($matchesのindexの間違い) ``` add_rewrite_rule('^animal/dog/([0-9]+)/?$', 'index.php?p=$matches[1]', 'top'); ``` これだけでは不十分で ``` add_rewrite_rule('^animal/dog/([0-9]+)/?$', 'index.php?post_type=dog&p=$matches[1]', 'top'); ``` として、「post_type」をパラメータに追加する必要がありました 「p」で投稿IDさえつけてあげれば勝手に投稿タイプを判別してそれ用のテンプレートを 実行してくれるのかと思っていたらそうではなかったようです こんなことに丸一日かけてしまい呆れました、お目汚し失礼しました ご協力いただいたkei344さん、ありがとうございました