WordPressオリジナルテーマの作り方|初心者でも迷わない自作手順と必要ファイル完全ガイド
はじめに
WordPressでオリジナルテーマを作れるようになると、デザインの自由度が一気に広がります。既製テーマをそのまま使うのではなく、サイトの目的やブランドに合わせて、レイアウト・導線・機能を細かく設計できるのが大きな魅力です。特に「ワードプレス オリジナルテーマ」を作れるようになると、見た目だけでなく、表示速度や運用効率、SEO面の最適化まで自分で調整しやすくなります。
ただし、初心者にとっては「何から始めればいいのか分からない」「必要なファイルが多くて難しそう」と感じやすい分野でもあります。そこで本記事では、WordPressオリジナルテーマの基礎知識から、必要ファイル、作成手順、テンプレート階層、よくあるエラー対策までを、初心者でも迷わないように順番に解説します。
1. WordPressオリジナルテーマとは?初心者が最初に知るべき基礎知識
WordPressオリジナルテーマとは、自分のサイト専用に設計・開発したテーマのことです。既製テーマのデザインを少し変えるのではなく、HTML構造やCSS、PHPテンプレートを組み立てて、サイトの見た目と機能をゼロから近い形で作るのが特徴です。
1-1. WordPressテーマの役割と表示の仕組み
WordPressテーマは、サイトの表示を担当するテンプレートの集合体です。WordPress本体がコンテンツや設定を管理し、テーマがその情報をどのように見せるかを決めます。
たとえば、投稿ページでは記事タイトル、本文、アイキャッチ画像、カテゴリーなどを表示しますが、これらをどの位置に配置するか、どんな見出しデザインにするか、どのパーツを共通化するかはテーマ側で制御します。つまり、WordPressは「中身」を管理し、テーマは「見せ方」を担当していると考えると分かりやすいでしょう。
1-2. オリジナルテーマと既存テーマ・子テーマの違い
既存テーマは、すでに完成されたデザインや機能を持つテーマです。導入が簡単で、短時間でサイトを公開できます。一方で、デザインや構造を大きく変えたい場合には制約が出やすいです。
子テーマは、親テーマの機能やデザインを引き継ぎながら、一部だけ変更する方法です。親テーマのアップデートに強い反面、親テーマの設計に依存します。そのため、独自の構成や機能を深く作り込みたい場合は、オリジナルテーマの方が自由度が高くなります。
オリジナルテーマは、ベースとなる既存テーマに縛られないため、サイトの目的に合わせた最適化がしやすいです。ただし、その分だけ設計と実装の手間は増えます。
1-3. オリジナルテーマを自作するメリット・デメリット
メリットは、デザインと機能を完全にコントロールできることです。不要な機能を削ぎ落として軽量化しやすく、表示速度の改善にもつながります。また、クライアント案件や自社サイトでは、将来的な運用方針に合わせて構造を整えやすいのも利点です。
一方、デメリットは、作成に時間がかかることです。HTML/CSSだけでなく、PHPやWordPress独自の関数、テンプレート階層の理解も必要になります。さらに、セキュリティや保守性を意識した実装も欠かせません。
1-4. 初心者でもWordPressオリジナルテーマは作れるのか
結論からいえば、初心者でも作れます。ただし、いきなり高度な機能を詰め込むのではなく、まずは静的HTMLをWordPressテーマに変換する流れを理解することが大切です。
最初は、トップページ、投稿一覧、投稿詳細、固定ページの4種類を作れるだけでも十分です。そこからメニュー、ウィジェット、アイキャッチ画像、パンくずなどを少しずつ追加していけば、実践的なオリジナルテーマに育てられます。
2. WordPressオリジナルテーマ作成に必要な前提知識と準備
WordPressオリジナルテーマを作る前に、最低限の知識と作業環境を整えておくと、制作がスムーズになります。
2-1. 必要なスキルはHTML・CSS・PHP・WordPress関数
まず必要なのはHTMLとCSSです。HTMLはページの骨組みを作り、CSSは見た目を整えます。これがなければ、テーマのベースを構築できません。
さらに、WordPressテーマではPHPが必要です。PHPを使って、記事タイトルや本文、URL、画像パスなどを動的に出力します。加えて、WordPress関数を使うことで、テーマとWordPress本体を連携させます。たとえば、get_header()、the_title()、the_content()、wp_head() などの関数は頻出です。
2-2. ローカル開発環境を用意する
WordPressテーマは、いきなり本番環境で作るのではなく、ローカル開発環境で制作するのが基本です。ローカル環境なら、表示崩れやPHPエラーが起きても、公開サイトに影響を与えずに検証できます。
XAMPP、MAMP、Localなどを使えば、手元のパソコンにWordPressを構築できます。初心者は、まずWordPressを問題なくインストールし、管理画面にログインできる状態を作ることから始めましょう。
2-3. コードエディタとブラウザ検証ツールを準備する
コードを書くためには、使いやすいエディタが必要です。Visual Studio Codeのようなエディタを使うと、PHPやHTML、CSSの編集がしやすくなります。
ブラウザの開発者ツールも重要です。要素の確認、CSSの調整、コンソールエラーの発見など、テーマ開発では必須に近い存在です。テーマの崩れを見つけたときも、開発者ツールを使えば原因を効率よく追えます。
2-4. テーマ化する前の静的HTMLを用意する
オリジナルテーマ制作では、最初に静的HTMLでサイトの形を作っておくと進めやすくなります。ヘッダー、フッター、サイドバー、投稿一覧、記事詳細など、WordPress化する前の完成イメージを用意しておくことで、テンプレート分割の作業が明確になります。
この段階で、デザインの方向性、レイアウト、必要なパーツを整理しておくと、後の修正が少なくなります。
3. WordPressオリジナルテーマに必要な基本ファイル
WordPressテーマは複数のファイルで構成されますが、最初からすべてを用意する必要はありません。最低限のファイルから始めて、必要に応じて追加していけば十分です。
3-1. 最低限必要なstyle.cssとindex.php
WordPressテーマとして認識されるためには、少なくとも style.css と index.php が必要です。style.css にはテーマ情報を書き、index.php はテーマのメインテンプレートとして動作します。
style.css がないとテーマとして表示されないことがあり、index.php がないとWordPressが出力先を判断できません。まずはこの2つを用意するのが出発点です。
3-2. functions.phpの役割と使い方
functions.php は、テーマの機能を追加するためのファイルです。CSSやJavaScriptの読み込み、アイキャッチ画像の有効化、メニュー登録、ウィジェット追加などをここで行います。
また、WordPressの動作に関わる設定も記述できるため、テーマの中核を支える重要なファイルです。ただし、記述ミスがあると画面が真っ白になることがあるため、編集時には慎重さが必要です。
3-3. header.php・footer.php・sidebar.phpの役割
header.php は、サイト上部の共通部分をまとめるファイルです。meta情報、CSS読み込み、ヘッダー、ナビゲーションなどを入れます。
footer.php は、フッター部分や wp_footer() の出力先として使います。閉じタグの管理もここで行うことが多いです。
sidebar.php は、サイドバーを共通化したいときに使います。ウィジェットエリアと組み合わせることで、複数ページで同じサイドバーを表示できます。
3-4. front-page.php・home.php・page.php・single.php・archive.phpの違い
front-page.php はトップページ専用のテンプレートです。固定ページをトップにした場合や、独自のトップページを作るときに使われます。
home.php は投稿一覧ページに使われます。ブログのトップや記事一覧を表示するページで使うことが多いです。
page.php は固定ページに使われます。会社概要、サービス紹介、問い合わせページなどに対応します。
single.php は投稿詳細ページ用です。ブログ記事やお知らせ記事の個別表示を担当します。
archive.php は一覧ページのテンプレートです。カテゴリー一覧、タグ一覧、月別アーカイブなどに使われます。
3-5. screenshot.pngや404.phpなど追加しておきたいファイル
screenshot.png は、管理画面のテーマ一覧に表示されるサムネイル画像です。テーマの印象を伝えやすくなります。
404.php は、ページが見つからないときのエラーページです。ユーザーが迷わないように、トップページや検索窓への導線を設けると親切です。
そのほか、search.php や comments.php、template-parts ディレクトリなどを追加すると、より整理されたテーマになります。
4. WordPressオリジナルテーマの作り方|基本手順
ここからは、実際にWordPressオリジナルテーマを作る流れを順番に見ていきます。
4-1. テーマ用フォルダを作成する
最初に、WordPressのテーマディレクトリ内に新しいフォルダを作成します。フォルダ名は、分かりやすくサイト名やテーマ名にしておくと管理しやすいです。
このフォルダが、オリジナルテーマの入れ物になります。ファイルはすべてこの中に整理して配置していきます。
4-2. style.cssにテーマ情報を記述する
style.css の先頭には、テーマ情報をコメント形式で記述します。テーマ名、作者名、説明文、バージョンなどを書いておくと、WordPressがテーマとして認識します。
この情報が正しく書かれていないと、管理画面にテーマが表示されないことがあるため注意が必要です。まずは最低限のテーマ名だけでも記述しましょう。
4-3. index.phpを作成してテーマを認識させる
次に、index.php を作成します。最初はシンプルな内容で構いません。WordPressがこのテーマを読み込める状態を作ることが目的です。
index.php が存在すると、WordPressはテーマのメインテンプレートとして利用できます。ここから他のテンプレートに分割していく流れになります。
4-4. 管理画面からオリジナルテーマを有効化する
テーマファイルを設置したら、WordPress管理画面の外観メニューからテーマ一覧を開きます。作成したテーマが表示されていれば、テーマ情報は正しく認識されています。
そのまま有効化すれば、オリジナルテーマが適用されます。表示が崩れても、この段階では正常です。まだテンプレートの分割やWordPressタグの埋め込みが済んでいないためです。
4-5. 静的HTMLをWordPressテーマ用に分割する
テーマを有効化したら、静的HTMLを header.php、footer.php、index.php などに分けていきます。ヘッダーやフッターの共通部分を切り出し、WordPress関数で呼び出す形に変換します。
この作業を行うことで、サイト全体の保守性が高まります。共通部分を一箇所で管理できるため、後から修正する際も効率的です。
5. HTMLをWordPress化する具体的な方法
HTMLをWordPressテーマへ変換する際のポイントは、静的な記述を動的な記述に置き換えることです。
5-1. header.phpとfooter.phpに共通パーツを分ける
サイト上部のロゴ、グローバルナビ、ヘッダー画像などは header.php にまとめます。ページ下部のコピーライトやフッターリンクは footer.php に分けます。
共通部分を分離しておくと、全ページに反映されるので修正が簡単です。デザイン変更時にも、1ファイルの編集で全体を更新できます。
5-2. get_header・get_footer・get_sidebarを使う
WordPressでは、共通パーツを読み込むために get_header()、get_footer()、get_sidebar() を使います。これにより、各テンプレートに共通コードを毎回書かずに済みます。
たとえば、index.php に get_header() を書けば header.php が読み込まれ、get_footer() を書けば footer.php が読み込まれます。テーマ開発の基本となる考え方です。
5-3. bloginfo・home_url・get_template_directory_uriでURLを動的にする
画像やリンクのURLを固定で書くと、環境が変わったときに表示されなくなることがあります。そこで、WordPress関数を使ってURLを動的に出力します。
bloginfo() はサイト情報の出力、home_url() はサイトのトップURL、get_template_directory_uri() はテーマ内のファイルパス取得に使います。これらを使うことで、ローカル環境から本番環境への移行がしやすくなります。
5-4. wp_headとwp_footerを正しく設置する
wp_head() は、</head> の直前に書きます。WordPressやプラグインがCSS・JavaScript・メタ情報などを追加するために必要です。
wp_footer() は、</body> の直前に書きます。こちらも重要な処理が出力される場所です。どちらかが抜けると、プラグインが正常に動作しないことがあります。
5-5. CSS・JavaScript・画像ファイルを正しく読み込む
テーマ内のCSSやJavaScript、画像ファイルは、正しいパスで読み込む必要があります。特にWordPressでは、テンプレートの中で相対パスを直接使うと、ページ階層によって崩れることがあります。
そのため、テーマディレクトリのURLを取得できる関数を利用するのが安全です。読み込みに失敗すると、デザインが反映されない、スクリプトが動かないなどの問題が起きます。
6. 投稿ページ・固定ページ・一覧ページを作る
WordPressオリジナルテーマの実用性を高めるには、各ページタイプに対応したテンプレートを作ることが重要です。
6-1. WordPressループで投稿を表示する
WordPressループは、投稿を順番に取得して表示する仕組みです。記事一覧ページでは、このループを使って記事タイトル、抜粋、投稿日などを出力します。
ループを理解すると、記事データを柔軟に扱えるようになります。オリジナルテーマ制作では必ず押さえておきたい基本です。
6-2. single.phpで投稿詳細ページを作る
single.php は、個別記事ページのテンプレートです。記事タイトル、本文、投稿日、カテゴリ、タグ、前後記事リンクなどを表示します。
ブログテーマでは最もよく使うテンプレートのひとつです。読みやすさや関連記事導線を意識して設計すると、ユーザー体験が向上します。
6-3. page.phpで固定ページを作る
page.php は、固定ページ専用のテンプレートです。会社概要、サービス案内、プライバシーポリシーなど、頻繁に更新されないページに向いています。
固定ページは投稿と違ってカテゴリーやタグを持たないことが多いため、シンプルで見やすいレイアウトにすると使いやすくなります。
6-4. archive.phpでカテゴリー・月別アーカイブを作る
archive.php は、一覧ページ全般に使えるテンプレートです。カテゴリー別、タグ別、日付別などの一覧をひとまとめに対応できます。
アーカイブページでは、タイトルだけでなく、件数や説明文を入れることで、ユーザーが内容を把握しやすくなります。投稿数が多いサイトでは特に重要です。
6-5. front-page.phpでトップページを作る
front-page.php は、サイトの顔となるトップページを作るためのテンプレートです。ファーストビュー、サービス紹介、最新記事、実績、CTAなどを自由に配置できます。
オリジナルテーマの強みは、このトップページをサイト目的に合わせて設計できる点です。企業サイト、ブログ、ポートフォリオなど、用途に応じて構成を変えられます。
7. functions.phpでテーマ機能を追加する
functions.php は、テーマの機能拡張を担う非常に重要なファイルです。
7-1. CSSとJavaScriptをwp_enqueue_style・wp_enqueue_scriptで読み込む
CSSやJavaScriptは、直接HTMLに書くのではなく、WordPressの読み込み関数を使うのが基本です。wp_enqueue_style() と wp_enqueue_script() を使えば、読み込み順や依存関係を管理しやすくなります。
この方法は、重複読み込みの防止やプラグインとの競合回避にも役立ちます。
7-2. アイキャッチ画像を有効化する
アイキャッチ画像を使うには、functions.php でサポートを有効化します。これにより、投稿や固定ページにサムネイル画像を設定できるようになります。
一覧ページや記事詳細ページでアイキャッチを表示すると、視認性が上がり、記事の印象も良くなります。
7-3. メニュー機能を追加する
WordPressでは、管理画面からメニューを編集できるようにすることができます。functions.php でメニュー位置を登録しておくと、ヘッダーナビやフッターナビを柔軟に管理できます。
メニューをコードに直書きせず、管理画面で差し替えられるようにしておくと、運用がしやすくなります。
7-4. ウィジェットエリアを追加する
サイドバーやフッターに表示する枠を、ウィジェットエリアとして登録できます。これにより、管理画面から検索窓、カテゴリー一覧、バナーなどを追加しやすくなります。
更新のしやすさを考えると、固定表示にするよりもウィジェット化したほうが実用的です。
7-5. タイトルタグやHTML5サポートを設定する
テーマの品質を高めるには、タイトルタグの自動管理やHTML5への対応も重要です。タイトルタグをWordPress側で制御できるようにすると、SEO面でも扱いやすくなります。
HTML5サポートを有効にしておくと、フォームやコメントなどの出力がより適切になります。
8. WordPressテンプレート階層を理解する
テンプレート階層は、WordPressがどのファイルを優先して使うかを決める仕組みです。オリジナルテーマ制作では、この理解が非常に重要です。
8-1. テンプレート階層とは何か
テンプレート階層とは、特定のページを表示するときに、WordPressが候補となるテンプレートを上から順に探していく仕組みです。より具体的なファイルがあればそれを使い、なければ汎用テンプレートにフォールバックします。
この仕組みを理解すると、なぜ single.php が使われるのか、なぜ archive.php が優先されるのかが分かるようになります。
8-2. トップページで使われるテンプレート
トップページでは、設定によって使われるファイルが変わります。固定ページをトップに設定した場合は front-page.php や page.php が使われることがあります。
投稿一覧をトップにする場合は home.php が使われることがあります。トップページの挙動はサイト設定とテンプレート階層の両方を見る必要があります。
8-3. 投稿・固定ページで使われるテンプレート
投稿詳細ページでは single.php、固定ページでは page.php が基本です。さらに、投稿タイプごとに個別テンプレートを用意することもできます。
サイトが大きくなるほど、テンプレートを細かく分けることで保守しやすくなります。
8-4. カテゴリー・タグ・検索結果で使われるテンプレート
カテゴリーやタグの一覧は archive.php や taxonomy.php 系のテンプレートが使われます。検索結果は search.php で制御できます。
一覧の種類ごとにデザインを変えたいときは、テンプレート階層を活用すると柔軟に対応できます。
8-5. 迷ったときに確認すべきテンプレートの優先順位
表示が思った通りにならない場合は、まずどのテンプレートが使われているかを確認します。WordPressはより具体的なテンプレートを優先するため、意図しないファイルが呼ばれていることがあります。
テンプレート階層を理解しておくと、どこを修正すべきかすぐに判断しやすくなります。
9. 初心者がつまずきやすいエラーと解決方法
WordPressオリジナルテーマ作成では、いくつか典型的なつまずきポイントがあります。あらかじめ知っておくと、トラブル時に落ち着いて対処できます。
9-1. テーマが管理画面に表示されない
テーマが表示されない場合は、style.css のテーマ情報が正しいか確認します。フォルダ位置が正しいか、コメント形式が崩れていないかも重要です。
また、index.php が存在しないと認識されないことがあります。まずは必要最小限の構成ができているかを見直しましょう。
9-2. CSSや画像が読み込まれない
CSSや画像が表示されない場合は、パスの記述ミスが原因であることが多いです。固定の相対パスではなく、テーマディレクトリのURLを使っているか確認します。
キャッシュが残っていることもあるので、ブラウザの再読み込みやキャッシュ削除も試してください。
9-3. 投稿が表示されない
投稿が表示されない場合は、WordPressループの書き方や、テンプレートファイルの選択を確認します。公開状態になっているか、表示設定に問題がないかも重要です。
また、クエリの条件が厳しすぎると投稿が取得されないことがあります。まずは基本のループから確認するのが安全です。
9-4. ヘッダーやフッターが崩れる
ヘッダーやフッターの崩れは、HTMLタグの閉じ忘れや、テンプレートの分割ミスで起こりやすいです。header.php と footer.php の構造を見直し、余計な閉じタグがないか確認しましょう。
CSSの読み込み順や、wp_head()・wp_footer() の設置漏れも原因になりがちです。
9-5. functions.php編集時の画面真っ白エラーを防ぐ方法
functions.php は、1文字のミスで致命的なエラーになることがあります。編集前にバックアップを取り、少しずつ保存して確認するのが安全です。
エラーが起きたら、直前に追加したコードを疑いましょう。可能であればローカル環境で検証してから本番に反映するのが理想です。
10. オリジナルテーマを公開前に確認するチェックリスト
公開前の確認は、テーマ品質を左右する大切な工程です。見た目だけでなく、運用面や安全性も確認しておきましょう。
10-1. レスポンシブ表示を確認する
パソコンだけでなく、スマホやタブレットでもレイアウトが崩れないか確認します。メニュー、画像、文字サイズ、余白の見え方をチェックしましょう。
レスポンシブ対応が甘いと、せっかくのオリジナルテーマでもユーザー体験が下がってしまいます。
10-2. パンくず・タイトル・メタ情報を確認する
SEOや使いやすさの観点から、パンくずリスト、ページタイトル、meta情報の確認は欠かせません。ページの構造が分かりやすいと、ユーザーにも検索エンジンにも伝わりやすくなります。
表示内容に漏れがないか、ページタイプごとに確認しておきましょう。
10-3. セキュリティとエスケープ処理を確認する
WordPressテーマでは、出力時のエスケープが重要です。URL、テキスト、属性値などは、適切な関数で安全に出力する必要があります。
入力値をそのまま出力すると、思わぬ脆弱性につながることがあります。安全な書き方を習慣化することが大切です。
10-4. 表示速度と不要ファイルを確認する
テーマ内に使っていないCSSやJavaScript、画像ファイルが多いと、表示速度に悪影響が出ます。公開前に不要なファイルを整理して、軽量化を意識しましょう。
ファイルの分割方法や画像の最適化も、速度改善に有効です。
10-5. 本番環境へアップロードする前のバックアップ確認
本番環境へ反映する前には、必ずバックアップを取っておきます。テーマファイルだけでなく、データベースも含めて保存しておくと安心です。
予期せぬ不具合が出ても、元に戻せる状態を作っておくことが重要です。
11. WordPressオリジナルテーマ作成を効率化する方法
オリジナルテーマは、工夫次第で制作効率を大きく高められます。最初から完璧を目指すより、再利用しやすい設計を意識することが大切です。
11-1. スターターテーマを活用する
ゼロから作るのが不安な場合は、スターターテーマを活用する方法があります。最初から最低限の構造やWordPressタグが整っているため、学習コストを下げられます。
ただし、既存の設計をそのまま使うのではなく、自分のサイトに合わせて整理しながら使うことが重要です。
11-2. ブロックテーマとクラシックテーマの違いを理解する
WordPressには、ブロックテーマとクラシックテーマがあります。ブロックテーマはサイトエディター中心の設計で、クラシックテーマはPHPテンプレートを中心に作る従来型です。
この記事で扱っているWordPressオリジナルテーマは、主にクラシックテーマの考え方です。既存の制作フローに慣れているなら、まずはクラシックテーマで基礎を固めると理解しやすいでしょう。
11-3. よく使うテンプレートパーツを共通化する
カードデザイン、ボタン、見出し、関連記事など、繰り返し使うパーツは共通化すると効率的です。template-parts を使って分割しておけば、修正も一箇所で済みます。
共通化は、見た目の統一と保守性の両方に役立ちます。
11-4. Gitで変更履歴を管理する
テーマ制作では、コードの変更履歴を残しておくと非常に便利です。Gitを使えば、いつ何を変更したかが分かり、エラーが起きても以前の状態に戻しやすくなります。
長期運用や複数人での開発では特に重要です。初心者のうちから慣れておくと、将来の制作効率が大きく変わります。
12. WordPressオリジナルテーマ作成に関するよくある質問
12-1. WordPressオリジナルテーマ作成にどれくらい時間がかかるか
作る範囲によって大きく変わります。シンプルなブログテーマなら、基本構成を理解していれば数日から数週間で形にできます。デザインの作り込みや機能追加が多い場合は、さらに時間がかかります。
12-2. PHPが苦手でもオリジナルテーマは作れるか
最低限のPHPを理解していれば作れます。WordPressテーマでは、複雑なプログラムよりも、テンプレートタグの使い方やファイル分割の理解が重要です。最初は基本関数を少しずつ覚えれば問題ありません。
12-3. オリジナルテーマと有料テーマはどちらがよいか
目的によって異なります。スピード重視なら有料テーマが便利です。独自性や細かな設計、長期運用の最適化を重視するならオリジナルテーマが向いています。
12-4. 自作テーマを配布・販売するときに注意すること
配布や販売をする場合は、コードの品質だけでなく、ライセンス、サポート範囲、更新体制も考える必要があります。特に、使用している画像やフォント、外部ライブラリの利用条件には注意が必要です。
まとめ
WordPressオリジナルテーマは、最初は難しく見えても、基本の流れを押さえれば初心者でも十分に作成できます。まずは静的HTMLを用意し、style.css と index.php でテーマとして認識させ、header.php や footer.php に分割しながら WordPress化していくのが基本です。
さらに、functions.php で機能を追加し、テンプレート階層を理解すれば、投稿ページ・固定ページ・一覧ページ・トップページまで柔軟に作れるようになります。ワードプレス オリジナルテーマを自作できるようになると、デザインの自由度だけでなく、運用しやすさや改善のしやすさも大きく向上します。
まずは小さなテーマから始めて、少しずつ機能を増やしていくことが、失敗しない近道です。

