WordPress でブログ部分をサブディレクトリにまとめる

以前書いたものをテンプレートの扱いから見直し。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%

など。