以前書いたものをテンプレートの扱いから見直し。WordPress で「フロントページ」を固定ページにして、投稿をサブディレクトリにまとめたときのテンプレートなどについて。
WordPress でサイト全体を管理しつつ、トップページ(例: www.example.com/)はサイトのトップとしてバナーや特集へのリンクなどを載せたくて、いわゆるブログ的な部分はサブディレクトリ(例: www.example.com/blog/)にまとまっているようにしたい。
フロントページを固定ページにした時に指定するための、「blog」、「top」 というページをあらかじめ作成し、「管理画面」>「設定」>「表示設定」から「プロントページの表示」を変更。
「フロントページの表示」を「固定ページ」にして、「フロントページ」に先ほどつくった「top」、「投稿ページ」に「blog」に指定。
このときのコンディショナルタグやテンプレートは、
「top」ページ (=フロントページ) | 「blog」ページ | |
---|---|---|
is_home() | false | true |
is_front_page() | true | false |
is_page | true | false |
テンプレート階層 | ページと同じ。 pagename.php > page-slug.php > page-id.php > page.php |
home.php > index.php |
WordPress で、is_home() は投稿ページのホームディレクトリにいるかの条件で、is_front_page()はサイト全体についての条件。
「blog」ページは「Page」でつくるけどページ扱いはされない。is_page は false になり、「page-blog.php」を作っても適用されない。URLを決めるためのプレイスホルダーと考えればいいのか。
あとはブログ部分のURLを統一するために「パーマリンク設定」で、「/blog」を挟んでおく。
例えば、
/blog/archives/%post_id%
/blog/?p=%post_id%
など。