前提・実現したいこと
カスタム投稿タイプを作り、専用のsingle-***.phpを作ったが、反映されず
single.phpが読み込まれるわけでもなくトップページが表示されてしまう
最終的に目指すのは
http://hoge.com/animal/dog/123
でカスタム投稿タイプ「dog」に属するpostID=123の詳細ページを上記の専用テンプレートで表示することです
しかし、現実には上記のURLのまま、http://hoge.com/ のホームが表示されてしまいます
状況
カスタム投稿タイプ(dog)の専用投稿ページテンプレート(single-dog.php)が投稿ページで読み込まれない状況に悩んでいます
カスタム投稿タイプの設定とURL設定のために以下のコードをfunctions.phpに書いて試しているのですが
どこに問題があるのでしょうか
PHP
1add_action( 'init', 'create_post_type_dog' ); 2function create_post_type_dog() { 3 //投稿タイプ設定 4 register_post_type( 'dog', 5 array( 6 'labels' => array( 7 'name' => __( '犬' ), 8 'singular_name' => __( '犬' ) 9 ), 10 'public' => true, 11 'publicly_queryable' => true, 12 'hierarchical' => false, 13 'exclude_from_search' => false, 14 'query_var' => true, 15 'has_archive' => true, 16 'rewrite' => array('slug' => 'animal/dog', 'with_front'=>false)//archiveページのパス決定 17 ) 18 ); 19} 20 21 22//singleページのURLを決定 23add_filter( 'post_type_link', 'my_post_type_link', 1, 2 ); 24function my_post_type_link( $link, $post ){ 25 if ( 'dog' === $post->post_type ) { 26 return home_url( '/animal/dog/' . $post->ID .'/'); 27 } else { 28 return $link; 29 } 30} 31 32 33//画面はトップページを表示。URLはそのままhttp://hoge.com/animal/dog/1498/ 34add_action( 'init', 'my_rewrite_rules' ); 35function my_rewrite_rules() { 36 add_rewrite_rule('animal/dog/([0-9]+)?$', 'index.php?p=$matches[2]', 'top'); 37 add_rewrite_rule('animal/dog/?$', 'index.php?post_type=dog', 'top'); 38}
###補足
1)
/animal/ディレクトリはwpではなく、animalディレクトリがドキュメントルート下に実在している状況で、以下のような構成になっています
/
/animal/index.html
/wp/(wordpressディレクトリ)
2)
/animal/dog でアーカイブページの出力(archive-dog.php)は成功しています
補足情報(FW/ツールのバージョンなど)
wordpressは4.5.2です
どうぞよろしくお願いします
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。