WordPressの固定ページは通常、次の命名規則でファイルを作成します。
page-$pagename.php
例えば、company
というスラッグの固定ページなら
page-company.php
というファイル名になります。しかし例えば、company
の子ページとしてabout
を作成して、example.com/company/about
にした場合でも、テンプレートファイル名は
page-about.php
となるため、大量の固定ページテンプレートを作る際に管理しにくくなります。そこで、これを次のようなテンプレートファイルを作れるようにします。
wp-content/themes/(テーマ名)/company/index.php - companyのテンプレート
wp-content/themes/(テーマ名)/company/about.php - company/aboutのテンプレート
page.phpの作り方
しくみとしては、本来の固定ページテンプレートであるpage.php
を次のようにします。
<?php
// テンプレートがあるかをチェック
$url = $_SERVER['REQUEST_URI'];
$url = explode('?', $url);
$url = $url[0];
$path = get_template_directory() . substr($url, 0, strlen($url) - 1) . '.php';
if (file_exists($path)) {
include($path);
exit();
}
// index.phpを付加して検索
$path = get_template_directory() . $url . '/index.php';
if (file_exists($path)) {
include($path);
exit();
}
?>
ここに、一般の固定ページ用のテンプレートを記述します
これで、先のようにテーマディレクトリの中にフォルダーを作ってテンプレートを配置すると利用できるようになります。従来通りのpage-$pagename.php
というテンプレートも利用できます(そちらの方が優先されます)。