今回は、WordPress本体とは別のディレクトリに設置した、WordPressと無関係な静的ページで、本体の header.php や footer.php といったテンプレートファイルだけを使い回す方法について解説していきます。
こんなお悩み、抱えていませんか?実は、たった数行のコードを追加するだけで、この要求は簡単に実現できます。
なぜ別ディレクトリでWPテンプレートを使う必要があるのか?
制作現場では、WordPressの管理とは切り離したいページ、例えば コンバージョン(CV)率を最大化するための独立したランディングページ(LP) を、メインサイトのルートディレクトリ直下ではなく、一段階下げた /landing/ や /special/ といったディレクトリに設けることが頻繁にあります。- WP本体の場所: http://hoge.com/ (ルートディレクトリ)
- LPの場所: http://hoge.com/landing/ (サブディレクトリ)
このLPにWordPressのファイルは一切置いていません。しかし、サイトの統一性を図るため、グローバルナビゲーションやフッターの著作権表示などは、WP本体のものと共通化したいというニーズが浮上します。
これを手作業で二重管理するのは、保守コストが高くなる一方でしょう。
【基礎編】別ディレクトリで共通テンプレートを読み込む手順
基本的なテンプレート、すなわちテーマに標準で含まれている header.php や footer.php を読み込むための手順です。 /landing/index.php (または任意のPHPファイル)に適用することを前提とします。ステップ① WP環境のロード
最初に、別ディレクトリにあるPHPファイル(例: /landing/index.php )の一番最初に、WordPressのコアファイルを呼び出す必要があります。LP側のPHPファイル(例: /landing/index.php )の先頭に記述
|
1 2 3 4 5 |
// WordPress本体のディレクトリがLPファイルの一つ上の階層にある場合 require_once('../wp-blog-header.php'); // または、WP本体がルート直下にある場合(パスは環境により変更の必要あり) // require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-blog-header.php'); |
wp-blog-header.php は、WordPressを起動するために必要な設定ファイル群を読み込む役割を担っています。
これにより、このLPのPHPファイル内でも、WordPressが提供する関数群(テンプレートタグ)が利用可能になるのです。パスの指定は、LPファイルから見たWP本体ディレクトリへの相対パスで記述するのが一般的です。
ステップ② テンプレートタグで呼び出し
WP環境をロードしたあとは、お馴染みのテンプレートタグでヘッダーやフッターを呼び出せます。|
1 2 3 4 5 6 7 8 |
require_once('../wp-blog-header.php'); // WPのヘッダーテンプレートを読み込みます get_header(); ?> <?php // WPのフッターテンプレートを読み込みます get_footer(); |
これにより、WP本体のテーマフォルダにある header.php と footer.php の内容が、このLPに挿入されることになります。まるでWPサイトの一員になったかのように振る舞うのです。
【応用編】LP専用のサブヘッダーファイルを使う
「共通のヘッダーは使いたいが、LPではグローバルナビゲーションを省きたい」「LP専用の追従バナーをヘッダーにだけ入れたい」といった、LP特有のカスタマイズを要求されることはよくあります。この場合は、WPのテーマファイル内にLP専用のサブヘッダーファイルを作成し、それを呼び出すのが最もスマートな方法です。
ステップ① サブヘッダーファイルの作成
WP本体のテーマディレクトリ内に、 header-landing.php(例:wp-content/themes/テーマ名/header-landing.php)のような専用のテンプレートファイルを作成します。このファイルの中身は、通常の
header.phpから不要な要素(グローバルナビなど)を削除・編集したものとなります。ステップ② get_template_part() で専用ファイルを呼び出す
別ディレクトリにあるLPのPHPファイルでは、標準の get_header() ではなく、get_template_part() という関数を使います。|
1 2 3 4 5 6 7 8 9 |
require_once('../wp-blog-header.php'); // ヘッダーを呼び出し(ファイル名から「header-」を除いた「landing」を指定) get_template_part('header', 'landing'); ?> <?php // フッターは共通でもOK get_footer(); |
get_template_part(header, landing); は、header-landing.php を読み込むための記述です。
第二引数に指定した landing が、ファイル名のハイフン以降(header-landing.php)と対応します。get_header(landing’)でも読み込み可能ですが、慣習としてカスタムテンプレートは get_template_part() を使うことが多いです。
get_template_part() の利点
この手法の最大の利点は、WordPressのテンプレート階層システムに乗っかっているため、将来的にテーマをアップデートしたり、テーマのファイルを整理したりする際も、WP本体の仕組みに則って管理できる点です。専用テンプレートファイルはWPテーマフォルダ内に集約されるため、保守・運用が非常に楽になりますよ。
まとめ
別ディレクトリにある静的ファイルからWordPressのテンプレートファイルを利用するテクニックは、制作効率と保守性を両立させるための実務的な裏技と言えると思います。| アクション | テンプレートの場所 | 呼び出し関数 | 用途 |
|---|---|---|---|
| WP環境のロード | /wp-blog-header.php |
require_once() |
WPの全関数を使えるようにする |
| 共通ヘッダー利用 | header.php |
get_header() |
メインサイトと全く同じヘッダーを使う |
| LP専用ヘッダー利用 | header-landing.php |
get_template_part('header', 'landing') |
LP用にカスタマイズしたヘッダーを使う |


コメント