WordPressの仕組みがわかる!ファイル構造とテンプレートPHP入門

わたしは普段、WordPressのテーマを使用してWebサイト制作をしているのですが、少しカスタマイズしたいなと思った時に、どのファイルを触っていいかわからず、修正のたびにビクビクしていました…。ですが、ワードプレスのワードプレスのテーマのファイル構造やそれぞれのファイルの役割を知ることで、該当するファイルを探し当てられるようになったり、ファイルを触ることへの怖さが減りました。この記事では、ワードプレスのファイルの中身がどうなっていのか、それぞれのファイルがどのような役割をもっているのかについて、解説します。細かいファイルの中身やphpについては、もう少しレベルアップしてから勉強しようと思っています。今回の記事では、ワードプレスのファイルの中身について解説します。修正を加える際は必ず子テーマを作成してからカスタマイズすることを強くお勧めします。読み終わる頃にはそれぞれのパーツがどこのファイルに書かれているのかが探し当てやすくなるはずです。PHPについて全くわからなくても、どこの何が書かれているかをまずはわかるようになりましょう!

目次

そもそもWordPressってどんな仕組み?

WordPressの「仕組み」って聞くと難しそうなんですが、私が実務でいちばん助けられた理解の仕方は、表示までの流れを一本の線で追うことでした。
つまり「ユーザーがページを開いてから、画面に出るまでに何が起きているか」を順番に知るだけで、ファイル構造もテンプレートも怖くなくなります。

WordPressがページを表示する手順

たとえば、誰かがあなたのブログ記事(投稿ページ)を開いたとします。WordPressはまず、そのURLが何を指しているかを判断します。「これは投稿の詳細ページだな」「これは固定ページだな」「これはカテゴリ一覧だな」という感じで、ページの種類を見分けるんです。

次にWordPressがするのは、テーマフォルダの中から“そのページに合うテンプレートファイル(PHP)”を探すことです。ここがポイントで、WordPressはテンプレートを適当に選んでいるわけじゃなくて、ちゃんと「探す順番のルール」を持っています(これが後半のテンプレート階層)。

そして選ばれたテンプレートPHPが実行されて、記事タイトルや本文などのデータを取り出しながらHTMLを組み立て、ブラウザに表示します。
このとき、プラグインやfunctions.phpが裏側で動いて、head内に情報を足したり、ショートコードを変換したり、読み込みファイルを追加したりします。

なので、まずはこの一言にまとめるのがいちばんスッキリしました。
WordPressは「ページ種類を判定 → テンプレートを選ぶ → PHPがHTMLを作って表示」している。
ここが分かると、次の「どのフォルダに何があるの?」が一気に整理できます。

WordPressのファイル構造(フォルダ構成の基本)

WordPressの中身をはじめて見たとき、私が固まった原因って「触っていい場所が分からない」ことでした。ファイルが多いのに、どれが大事でどれが危ないのかが分からない。
だからここでは、初心者が安心して進められるように「基本の線引き」を作ります。

WordPress本体(コア)のフォルダ構成

WordPressをインストールすると、ルート直下に wp-admin とか wp-includes とかが見えますよね。
この2つは、ざっくり言うと「WordPress本体の仕組み」です。管理画面や内部の共通処理が入っています。

実務でここを直接編集することは、かなりレアです。というより、基本的には触らなくてOKです。理由は単純で、WordPressはアップデートされるので、ここを編集しても更新で上書きされたり、最悪、サイトが不安定になったりするからです。

wp-contentの役割(themes / plugins / uploads)

制作側が触る中心になるのが wp-content です。
ここに「テーマ」「プラグイン」「アップロードした画像」など、サイトの中身が集まっています。

  • テーマ:見た目や表示の骨組み
  • プラグイン:機能の追加
  • uploads:画像などのメディア

この3つを“役割で分けて”見ると、かなり迷子になりにくいです。
今回の記事で主役になるのは、もちろんテーマ。場所は wp-content/themes/テーマ名/ です。

テーマフォルダの基本構成(よく使うファイル一覧)

テーマフォルダを開くと、いきなりPHPがずらっと並んでいて、「うっ…」ってなるのですが、カスタマイズしたいときに触るファイルは意外と限られています。ここでは、名前と役割をセットで覚えるのがおすすめです。

まず header.phpfooter.php。これは共通パーツで、サイトの上と下の骨格です。ロゴやグローバルナビ、フッターのコピーライトなど、複数ページで共通している部分はここに書いてあります。
次に style.css。CSSのファイルですが、WordPressテーマではテーマ情報(テーマ名など)もここに書かれます。
そして functions.php。これは後半でも出てきますが、テーマとしての機能を追加したり、設定をまとめたりする場所です。

最後に index.php。これは“最後の受け皿”みたいな存在で、他のテンプレートが見つからないときに使われます。
「編集しても反映されない」と悩んだときに、実はindex.phpが使われていた…ということもあるので、地味に重要です。

テンプレートファイル(PHP)の役割

ここからが本題です。
テンプレートファイル(PHP)は、言ってしまえば 「WordPressのデータを、見える形(HTML)に変換する設計図」 です。記事データ自体はデータベースに入っているので、テンプレートがそれを取り出して並べて、ようやく画面になります。

header.php / footer.php(共通パーツ)

たとえば投稿ページでも固定ページでも、だいたい同じヘッダーが表示されますよね。
これはテンプレート側で header.php を読み込む仕組みになっているからです。

私がやらかしたのは、「ヘッダーのロゴを変えたい」のに single.php を触って迷走したことです。
でも考えてみたら当たり前で、投稿ページだけじゃなく全ページで同じロゴが出ているなら、それは共通パーツの方にあるはずなんですよね。
この経験から、私は修正の前に「これは共通?それともこのページだけ?」を必ず考えるようになりました。ここが決まるだけで、触るファイルの候補がぐっと絞れます。

single.php / page.php / archive.phpの違い

次に、ページ種類ごとのテンプレートです。
ざっくり覚えるならこうです。

  • single.php:投稿ページ(ブログ記事の詳細)
  • page.php:固定ページ(会社概要やお問い合わせなど)
  • archive.php:一覧ページ(カテゴリ・タグ・日付など)

実務でよくあるのは「ブログ記事だけレイアウトを変えたい」→single.php、「会社概要ページだけ余白を変えたい」→page.php、「カテゴリ一覧のカードデザインを整えたい」→archive.php、みたいな流れです。
もちろんテーマによってはもっと細かく分かれていることもありますが、まずはこの3つが分かればだいぶ戦えます。

テンプレート階層(Template Hierarchy)とは?

テンプレート階層は、WordPressがテンプレートファイルを選ぶときの「探す順番のルール」です。
私はこれを理解してから、テーマ編集の迷子率が一気に下がりました。

ポイントは、より具体的なテンプレートがあればそれを優先し、なければ一般的なテンプレートに落ちるという考え方です。

投稿ページ(single)のテンプレートの優先順位

投稿ページを開いたとき、WordPressは投稿用のテンプレートを探します。テーマによっては、もっと細かい条件に合わせたテンプレートが用意されていることもあります。
もし「投稿ページ専用のテンプレート」が見つかればそれが使われ、なければ single.php が使われることが多いです。さらにそれも無ければ index.php に落ちます。

ここでよく起きるのが、「single.phpを編集しているのに表示が変わらない」問題です。
原因はだいたい次のどちらかで、どちらもテンプレート階層を知っていると疑えるようになります。

  • 別のより優先されるテンプレートが存在している
  • single.phpが無くてindex.phpが使われている(または別の構成)

「あれ、反映されない…」となったときに、テンプレート選択のルールを思い出せるだけで、焦りが減ります。

固定ページ(page)のテンプレートの優先順位

固定ページも同じ考え方です。
固定ページは、管理画面で「ページテンプレート」を割り当てられる場合があります。制作案件だと「このページだけレイアウト違い」を作ることが多いので、ページテンプレートが使われているケースもわりと見ます。

ページテンプレートが使われていなければ page.php が候補になり、最終的に index.php に落ちます。
「この固定ページだけ構造が違う」と感じたら、まずページテンプレートが設定されていないかを見る。これ、地味に効きます。

index.phpが最後に使われる理由

index.phpは“最後の受け皿”です。
テンプレートが細かく用意されていなくても、index.phpがあることで最低限表示できる。だからこそ、シンプルなテーマだとindex.phpがメインになっていることもあります。

逆に言うと、他のテンプレートを編集しても変わらないとき、index.phpが担当している可能性があります。
この「最後はindex」という仕組みを知っているだけで、原因の当たりが付けやすくなります。

WordPressテーマ編集の注意点(安全に作業するコツ)

ここは、アドセンス審査にも関わる「サイトの安定運用」にもつながるので、経験込みで書きます。
WordPressは便利ですが、PHPを触る以上、少しだけ“安全策”を用意しておくと安心です。

本番環境で直接編集しない

私が一番ヒヤッとしたのは、本番環境でPHPを直接編集して、保存した瞬間に画面が真っ白になったときです。
原因は本当にくだらなくて、カッコを閉じ忘れたとか、セミコロンが足りないとか、そのレベルでした。でもPHPは容赦なく止まります。管理画面にも入れなくなって、冷や汗が出ました。

それ以来、私はできる限りローカル環境やステージングで確認してから本番に反映するようにしています。バックアップも、あるだけで安心感が全然違います。
サイトが不安定だったり、エラーが出たりすると、読者にも審査にもあまり良い印象ではないので、「壊さない工夫」は結果的に自分を助けます。

子テーマを使うメリット

親テーマを直接編集すると、テーマのアップデートで修正が消えることがあります。これ、知らないと本当にショックです。
子テーマを使うと、親テーマは更新しても、子テーマ側の変更は残せます。

「子テーマって難しそう」と思いがちなんですが、必要なテンプレートだけ子テーマに置いて上書きするだけでOKな場面も多いです。
私にとっては、子テーマは“安心して触れる場所”ができる感覚で、作業のストレスがかなり減りました。

目的のテンプレートを見つける方法

「結局どのファイルが表示に使われてるの?」となったら、私は次の順番で考えています。
まず、いま見ているページが「投稿・固定・一覧」のどれかを言葉にします。次に、そのページに対応するテンプレート(single.php / page.php / archive.php)を開いて、header/footerの読み込みやループの位置を見ます。

テーマによっては template-parts などに分割されていて、テンプレートが別ファイルを呼び出していることもあります。最初は追うのが大変ですが、慣れると「このテーマは分割型だな」と分かってきます。
この“追いかける力”がつくと、テーマ改修が本当に速くなります。私も最初は迷子でしたが、繰り返すうちに「迷子時間」が確実に減りました。

まとめ

WordPressの仕組みは、突き詰めると「ページの種類を判定して、テンプレートを順番に探し、PHPでHTMLを組み立てる」流れです。
これが分かると、ファイル構造もテンプレートPHPも、ただの“謎のファイル群”じゃなくて、役割を持った部品として見えてきます。

この記事を書いた人

目次