
こんにちは、yutaです。
タイトル通りですが、WordPressでオリジナルテーマを作成している時に、get_header();でheader.phpが読み込めない現象に陥り苦戦しました。
問題点は、index.phpではget_header();で正常に読み込めているのに、その他のページではget_header();で読み込めないということです。
とりあえず、解決したのでその方法をシェアします!
1.「固定ページのテンプレート」という形でページを作成することでget_header();が効くようになる。
2.wp-adminにログインして、固定ページの「新規追加」をする。
3.固定ページのリンクを貼る。
4.僕のコード
1.「固定ページのテンプレート」という形でページを作成することでget_header();が効くようになる。
先ほど話したように、index.php以外ではget_header();が効かなくなる現象が起きました。ページを表示しても真っ白で何も出ないといった感じです。
色々調べているうちに、現在作成しているページに以下のコメントを記述すると、「固定ページのオリジナルテンプレート」としてWordPressが認識するようになり、何故かこの場合だとget_header();を読み込んでくれることが分かりました。
/*
Template Name: 任意の名前(例えば、”お問い合わせ”など。)
*/
<?php get_header(); ?>
このコメントを記述して、あとは通常通りにページをデザインします。
2.wp-adminにログインして、固定ページの「新規追加」をする。
ページが出来上がったら、WordPressにログインして固定ページの「新規追加」で新しい固定ページを作成します。
この時に、編集画面右の「ページ属性」の「テンプレート」を見ると先ほど作成したページがテンプレートとして選択できるようになっているので選択します。

編集画面では、とりあえずタイトルだけ付けて公開します。すると、先ほど作成したページが公開されるようになります。
3.固定ページのリンクを貼る。
あとは、オリジナルテンプレートのindex.phpになどにリンクを貼ればOKですね。
リンクの貼り方は、「<a href=“ここにURLを記載”>任意の名前</a>」を使いますが、“ここにURLを記載”部分に以下を記述します。
<?php echo get_page_link(該当ページのページID); ?>
ページIDは、Google Chromeで固定ページ一覧を開き、ページIDを確認したい固定ページのタイトル上にマウスカーソルを持って行くと画面下に”post=ページID”の形式でページIDが記述されているのでそこで確認できます。

ちなみに、貼り付けたリンクをクリックすると以下のように固定ページが表示されました。

4.僕のコード
僕はHow to系のサイトで完全なコードが載ってなくて、結局どうすれいいの?という経験が多いのでそういう事態を避けるために自分のコードを載せておきますね。
以下が、get_header();を効かせたいphpファイル
以下が、↑のページへのリンクを貼っているheader.php
今回は以上となります。質問等あれば、分かる範囲でお答えしますのでコメントしてください。
ブログランキングに参加しています。この記事が参考になったという方は、下のバナーを押していただけると嬉しいです。では、また!
