front-page.php with home.php

wordpressのデフォルトテーマに「front-page.php」テンプレートが標準で入っているようになったのが、どのバージョンからか全く憶えていないんですが。

スタティックなサイトのトップページをコーディングするのに非常に便利。
PHPファイルと言いながら、用意した「front-page.php」は実情

<!DOCTYPE html>
<html lang=”ja”> で始まり

</html> で終わるという、ほぼ、html=99%

クライアントワークで、この「front-page.php」を使わないことはまずあり得ないんですが、実はこれまで「home.php」と併用したことってなかったんです。

併設ブログをブログ形式のまま見せる形式がなかったというか。 ほとんどが固定ページの「Pages」で済ませていたことは前に書きました。

でも今回、週に数度は更新するだろうブログパートがメインだったので、「ブログ・トップ」の体裁が欲しいと思ったときに

WordPressで固定ページをブログのトップとして記事を一覧表示する方法

がめっちゃ参考になりました!
 

front-page.php はテーマのディレクトリにアップすれば、それがそのままルートで表示されます。

それは、初めてwordpressのオリジナル・テーマを作った頃から考えると home.php の代用、新名称のようにどこかで思い込んでいたんですね。

そう思い込むと、ブログのトップに投稿型の体裁を持って来たくても、あれ?home.php をテンプレートとして指定するにはどーしたらいいんだ??

home.php のファイル冒頭に

<?php
/*
Template Name: home
*/
?>

と書く?・・・みたいな事を平気で考えてたわけです。

それじゃあ普通の固定ページと同じで、home.php を使う意味がなくなってしまうのは理解しながら解決方法が「表示設定」とは思い出さなかった。
 

そんな、あれやこれやを悶々と考えているうちにリンクした記事にあたりまして、ああぁ!とやっと気づく。

home.php は以前ならアップすればそのままルートページのアドレス「/」や「/wp/」

WordPress アドレス (URL):wordpressをインストールした場所 か
サイトアドレス (URL):インストールした場所とは別指定のURLで公開されてたのが

ルート「/」は今や front-page.php になっているので、「固定ページ」としてページSlugを与えないと行き場がなかったんですね。

というわけで(そうか、なるほどー!)と納得しまくってブログのトップにしたい「固定ページ」では、「固定ページの属性」でテンプレートは特に指定しないまま、 ダッシュボードの設定 > 表示設定 で

○ 最新の投稿
● 固定ページ
    ホームページ:front-page(にあてた固定ページ名・タイトル)
    投稿ページ:home(にあてた固定ページ・タイトル)

と選択を変えて「変更を保存」  

こんなにシンプルで良かったのか・・・と余裕綽々で思うのは解決した後の話で、迷ってた間には固定ページ用に get_posts() 処理するテンプレート作りかけてましたからね。

wordpressはどんどん便利になるなぁ、と感心したのと、リンク先記事のように、皆さん用途・構成に合わせて最適解をよくご存知で。助かる。

 

で、後から思ったんですよね。

front-page.php は実際スタティックなトップページを受け持つのに最適なテンプレートだが、 昔これがなかった頃は、せっかく動的に使いやすい home.php をわざわざ90%スタティックなサイトトップページに使ってしまっていたなぁ・・・あぁ勿体無い。的なことを。

役割が全然違うことに気づかず、やっちまってたんですねぇ・・・  

「表示設定」侮れない。

前記事に書きましたが、同じテンプレートファイルでも、front-page.php は固定ページ仕様なので index.php にあるような

while ( have_posts() ) : the_post(); 文は効きません。

home.php はページSlugをつけて固定ページのように使用しても、属性は index.php の優先上位にあるので「表示設定」で「1ページに表示する最大投稿数」にあたる WP Query はもう用意されて待ってる状態、なのかぁ。と今更のように、すごーく身につく勉強になった顛末でした。  

これブログのトップに使わないときにも、どこかで1ページはwhile文で対処できちゃうってことだから美味しいよなぁと心にメモっていつか使おう。