###状況
現在「index.php」を作成し、そこから各ページへと流れる条件分岐を書いたのですが、こちらの書き方をすると、「lp.php」ではheaderやfooterが読まれるのに、「single.php」では読まれませんでした。
つまり「lp.php」ではget_header()
やget_footer()
が「index.php」から引き継がれているのだと思いますが、なぜか「single.php」では引き継がれないといった状況に思えます。
###理解できないこと
なぜこのようなことが起こるのでしょうか?
・どちらも「index.php」から同じように条件分岐している。
・「index.php」にはget_header()
やget_footer()
がある。
のに、一方でしか実行されないというのが理解できないです。
###該当のソースコード
「index.php」
php
1<?php 2get_header(); 3 4if( is_front_page() || is_home() ){ 5 get_template_part( 'lp' ); 6}elseif( is_page() ){ 7 get_template_part( 'page' ); 8}elseif( is_single() || is_singuler() ){ 9 get_template_part( 'single' ); 10} 11 12get_footer(); 13?>
「lp.php」
<p>lp.phpです。</p> <!-- ここではget_header()やget_footer()が効いています。 -->
「single.php」
<p>single.phpです。</p> <!-- ここではget_header()やget_footer()が効きません。 -->
###試したこと
まずカスタム投稿タイプでも、通常の投稿タイプでも同じでした。
続いて「index.php」をサーバーから削除してみましたところ、トップページ(つまり「lp.php」を開いたとき)はエラーとなり、記事ページ(つまり「single.php」を開いたとき)は平気でした。
ということはさらに疑問です。これは記事ページを開いて「single.php」を読む際には、「index.php」が不要という仕様になっているのだと思いますが、それならばなぜ他のページでは「index.php」が必要なのでしょうか?
この試したことと考察が正しいならば、「index.php」の要不要が統一されていないのはどうして?という別の疑問になってきます。
このあたりについて知りたいです。
宜しくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/11 10:10 編集