サポート » テーマ » 投稿の記事一覧を表示させたいのですが「archive.php」ではなく「home.php」が読み込まれます

  • 解決済 otaharunobu

    (@otaharunobu)


    お世話になります。otaharunobuと申します

    今、ブログ付きホームページをWordPressで構築しようとテーマを自分で作っています。

    ナビゲーションバーのメニューに「ブログ」というのをおいて、
    それをクリックすると、ブログの記事一覧が表示されるようにしたいです。

    そこでダッシュボードの「設定」>「表示画面」でフロントページの表示を「固定ページ」にし、
    フロントページを「トップ」、投稿ページを「ブログ」にしました。
    (ブログという固定ページを作って、それを選択しています)

    ブログの記事一覧は「archive.php」だと思うのですが、ブログをクリックすると「index.php」が読み込まれてしまいます。
    (テーマフォルダ内にarchive.phpは存在します。)

    ためしに「home.php」を作ってみたら、「home.php」が読み込まれました。

    これを「archive.php」を読み込ませるようにするには、どうしたらいいでしょうか?
    それとも今の仕様で、記事一覧を「home.php」で作ってもいいのでしょうか?

    公式ディレクトリ登録を目指しています。

    ご教示お願いします

    よろしくお願いします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック投稿者 otaharunobu

    (@otaharunobu)

    将来的には、カスタム投稿タイプの記事一覧「archive-news.php」というのを作って表示させたいですが、これだと「home-news.php」になってしまいます。

    これはおかしいと思うので、ご教示いただけたらうれしいです。

    こんにちは、

    投稿ページを「ブログ」にしました。

    テンプレート階層でのテンプレートの選択の詳細は、wp-includes/template-loader.phpを確認していただくといいと思いますが、

    投稿ページでブログを選択した場合、

    is_home()はTRUE is_front_pageはFALSEになるため、

    通常であれば、index.php が選択されます。この時にテンプレートを決める、get_home_template()は、home.php か index.phpの2択をリターンしますので、home.phpが存在すれば、home.phpが適用されるという筋書きになります。

    投稿ページでブログを選択した場合は、is_archive()ではなく、is_home()でテンプレートが決まりますので、archive.php にはなりません。

    公式ディレクトリ登録を目指しています。

    公式ディレクトリにあるテーマは、home.phpを使用していても、それを理由に審査をパスできないという事はないと思います。

    しかし、固定ページテンプレートを選択しない状態が基本なので、何らかのスクリプトで 最初から固定ページテンプレートのデモコンテンツを配置したり、ブログ用のテンプレートを設定してしまう行為は、問題になるのではないかと思います。

    なので、カスタム投稿タイプの記事一覧の表示は、カスタム投稿タイプの一覧で、archive-news.php を作らなくても、archive.phpや、index.phpで表示することが出来るのではないかと思います(未テスト)

    公式テーマディレクトリでは、カスタム投稿タイプの設定はルール上できないので、作りたい場合は、テーマ用プラグインを作るなどして対応する必要があると思います。

    余談

    WordPress4.7になると、現在ページの編集画面から選択できる 固定ページテンプレートが、通常の投稿や カスタム投稿で利用できるようになりそうです。

    http://tenman.info/labo/snip/archives/8984

    テンプレート階層以外での対応方法も念頭に置いておくと、いいのではないかと思います。

    • この返信は5年、 7ヶ月前にnobitaが編集しました。
    トピック投稿者 otaharunobu

    (@otaharunobu)

    こんにちは お世話になります

    ご回答ありがとうございます。

    理解はできました。

    固定ページで「トップ」「ブログ」というページを2つ作って、
    ダッシュボードの「設定」>「表示画面」でフロントページの表示を「固定ページ」にし、
    フロントページを「トップ」、投稿ページを「ブログ」にして使っている人は多いと思のですが、

    「home.php」でブログ投稿の記事一覧ページを作らないですよね。

    やはり「index.php」でブログのブログ投稿の記事一覧ページをつくるのが一般的でしょうか?

    「chocolat」のソースを拝見させていただいたのですが、そうなっている感じでした。

    ありがとうございます。

    「home.php」でブログ投稿の記事一覧ページを作らないですよね。

    home.php は、テンプレート階層の命名規則で動作するテンプレートですが、

    固定ページの、テンプレートはテンプレート階層に依存しないテンプレートですよね。

    home.phpや、front-page.php等テンプレート階層のファイル命名規則に従わなくても、自由にテンプレートを適用できるので、わけて考えるといいと思います。

    「index.php」でブログのブログ投稿の記事一覧ページをつくるのが一般的でしょうか?

    index.phpは、他のテンプレートが適用できない場合に最終的に使われるテンプレートなので、アーカイブのようなループページでも、個別投稿やページでも使用される可能性がありますので、個別投稿の前後リンクや、ループページ用のページングリンク等一通りの機能を持っている必要があります。

    なので、「ブログ一覧が表示できればいい」という考え方だと、何かしらの個別投稿などのページで前後リンクがないといった事が発生する可能性はあります。
    また、「ブログ一覧用の特別な表示」等がある場合は、他のアーカイブを表示した時に、無用なものが追加されているといった可能性もあります。
    結局ケースバイケースです。

    index.phpを使っても条件分岐の方法を理解していれば、何かブログ一覧に特別な表示をすることが出来ます。

    http://tenman.info/labo/snip/archives/7288

    削除

    • この返信は5年、 7ヶ月前にnobitaが編集しました。理由: 重複
    トピック投稿者 otaharunobu

    (@otaharunobu)

    ありがとうございます。

    他の先輩方の公式テーマを拝見させていただいたら、
    habakiriはhome.phpでブログ一覧をやっているようで、
    chocolatはindex.phpでブログ一覧をやっているようでした。

    私もこれでいきます

    大変勉強になりました

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「投稿の記事一覧を表示させたいのですが「archive.php」ではなく「home.php」が読み込まれます」には新たに返信することはできません。