サポート » 使い方全般 » home.phpが表示されない(page.phpが優先される?)

  • ある固定ページをフロントページ(トップページ)にして(表示設定で選択済み)、サーバーにhome.phpと、その他の固定ページのためにpage.phpをアップしました。
    index.phpはそのまま(home.phpとまったく同じ内容)です。
    これでトップページはhome.phpで表示される…のかと思ったら、表示されません。かわりにpage.phpで表示されてしまいます。
    page.phpをサーバーから削除したら、正しいトップページ内容が表示されましたが、これはhome.phpを読んでいるのか、たんにindex.phpで表示されているだけなのか、不明です。
    原因が分からず、困っています。
    どなたかアドバイスよろしくお願いします。

    home.phpの中身

    <?php get_header(); ?>
    
    	<div id="main">
    
    	<?php if(have_posts()):
    	while(have_posts()): the_post(); ?>
    	<h2><?php the_title(); ?></h2>
    	<?php the_content(); ?>
    	<?php endwhile; endif; ?>
    
    	</div><!--the end of main -->
    	<div id="sub">
    
          	<div id="newsfeed">
            <h2>What's New</h2>
            <p>1ニュース記事が入りますニュース記事が入ります</p>
            <p>2ニュース記事が入りますニュース記事が入りますニュース記事が入りますニュース記事が入りますニュース記事が入ります</p>
            <p>3ニュース記事が入ります</p>
            <p>4ニュース記事が入りますニュース記事が入りますニュース記事が入りますニュース記事が入ります</p>
          	</div><!-- the end of newsfeed -->
        	</div><!-- the end of sub -->
    
    <?php get_footer(); ?>

    page.phpの中身

    <?php get_header(); ?>
    
    	<div id="main">
    
    	<?php if(have_posts()):
    	while(have_posts()): the_post(); ?>
    	<h2><?php the_title(); ?></h2>
    	<?php the_content(); ?>
    	<?php endwhile; endif; ?>
    
    	</div><!--the end of main -->
    	<div id="sub">
    
        </div><!-- the end of sub -->
    
    <?php get_footer(); ?>

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • モデレーター gatespace

    (@gatespace)

    こんにちは。

    まず、Codexのテンプレート階層のページをよく読んで、
    どのテンプレートが使用されるのか理解してみましょう。
    http://wpdocs.sourceforge.jp/テンプレート階層

    固定ページをフロントページに設定されているとのことなので、
    この場合、Codexの「ホームページ表示」の段にあるように

    静的フロントページが設定されている場合、固定ページのテンプレート階層に従ってテンプレートを読み込みます。

    となり、page.phpが優先的に使用され、page.phpが無ければhome.phpが使用されます。

    さて、回避策ですが、
    WordPress 3.0以降であれば front-page.php が使用できます。
    詳しい内容は、やはりCodexをよく読んでください。

    トピック投稿者 yuly

    (@yuly)

    さっそく返信ありがとうございます!
    (初めての投稿なのですが、すばやい返信に感激しています)
    Codex確認します。
    ありがとうございました。

    ちょっと違うというかもっと根本的なところで間違いをおかしていた可能性があるので、今修正しています…。
    まだ解決には至っていませんが…。

    トピック投稿者 yuly

    (@yuly)

    解決しました。
    ちょっとまだ納得はいってないんですが、とりあえずちゃんとトップはhome.phpで表示、その他のページはpage.phpで表示されました。

    表示設定で指定していた「フロントページ=(ある個別ページ)」を外したらうまくいきました…。

    ようするにいままでトップページとして表示されていたのは、あくまでも「固定ページ」のままで、homeあつかいになってなかった感じです。

    そうなのか??ってまだ疑問は残りますが、とりあえず解決したのでご報告します。

    ありがとうございました。

    モデレーター gatespace

    (@gatespace)

    いや、ちゃんとCodexで全部説明されてますよ?

    ようするにいままでトップページとして表示されていたのは、あくまでも「固定ページ」のままで、homeあつかいになってなかった感じです。

    先にも説明しましたが、テンプレート階層にしたがって、
    この場合はhome.phpよりもpage.phpが優先されているだけです。

    今回は解決したのなら、それでもかまわないのですが、
    「フロントページの表示」で「固定ページ」を指定した場合、また同じ問題が起きますよ?
    確実にフロントページ(トップページ)に
    特定のテンプレートを使いたい場合は、
    テンプレート階層に従って作成した方がよいですよ。

    http://wpdocs.sourceforge.jp/テンプレート階層#.E3.83.95.E3.83.AD.E3.83.B3.E3.83.88.E3.83.9A.E3.83.BC.E3.82.B8.E8.A1.A8.E7.A4.BA

    トピック投稿者 yuly

    (@yuly)

    Codex読みました。

    わたしの場合、トップを静的ページ(固定ページ)に設定していたので、まずpage.phpが読み込まれるのが当然ですね。理解しました。
    そしてこの場合は、front-page.phpを使うのが解決策なんですね。

    ありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「home.phpが表示されない(page.phpが優先される?)」には新たに返信することはできません。