Amazonで商品を見る セール会場へ

WordPress自作テーマ制作①│超最小構成で自作テーマを作る方法

対象はPHPテンプレートを使うクラシックテーマです。最小の認識条件と、記事を実際に表示できる状態を分けて説明します。ブロックテーマの作成手順ではありません。過去の画面写真は空ファイルでテーマ認識を確認した時点のものです。

WordPressには優れたテーマがたくさんあります。

無料であればCoconn、有料であればSWELLが個人的には推しています。

これまで既存のテーマをベースにしたカスタマイズはたくさん行ってきましたが、もっと深いところでの理解とカスタマイズを行いたい!

ということで時間を見つけて、自作テーマ(自前のスターターテーマ)を作ることにしました。

ということで第一弾!

WordPressの基礎知識や環境構築、スターターテーマなど事前に学ぶことは色々あるのですが…

まずは最小構成で自作テーマを作って表示することから始めようと思います。

体形的な知識も無しにいきなり作るのは非効率!という方もいるかもしれませんが、

初めから何かの参考書を頼るのではなく、手を動かしながら、わからないことは調べてというスタイルの方が本当の意味で自力が付くと思います。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

最小構成のWordPress自作テーマの作り方

最小構成、最小手順でWordPressの自作テーマを作成して表示させてみます。

拍子抜けするくらい簡単に自作テーマが作成&表示できます。

以下の2つのファイルを作成すれば、ある意味自作テーマが表示できます。

自作テーマに必要なファイル
  1. index.php(テンプレートファイルがない場合に最後に使われるテンプレート)
  2. style.css(CSSを記述するファイル)

以下、やり方を解説します。

STEP
環境構築│サーバーにWordPressをインストールする

本来はLocalなどを使ってローカル環境でWordPressを構築するみたいな手順が主流ですが、

いきなりレンタルサーバーでWordPressを構築したいと思います。

学習には本番から分離したWordPress検証環境を用意します。既存サイトのテーマをいきなり切り替えず、元のテーマ名とファイルを控えておきます。

細かい手順は省きますが、アカウントを作成して、WordPressをインストール。

管理画面に入るところまで進めましょう。

STEP
index.phpの作成

テキストファイルを作成して、index.phpという名前のファイルを作成しましょう。

テーマ認識だけなら空でも構いませんが、表示確認にはこの後のindex.php例を入れてください。

index.phpはテンプレートファイルがない場合に最後に使われるテンプレート(HTMLファイル)です。

STEP
style.cssの作成

同様にテキストファイルを作成して、style.cssという名前のファイルを作成しましょう。

style.cssはCSSを記述するファイルです。

このファイルは空の状態だとWordPressテーマとして認識されませんので、

以下のようなコメントを記載する必要があります。

/*
    Theme Name: SUIMIN
*/

※テーマ名の記載が必須です。今回はSUIMINと名付けました。

STEP
テーマのアップロード

index.phpとstyle.cssを格納したフォルダを作成。

テーマのアップロード画面で、作成したZIPファイルを選択する様子を示す画面。

それをZIPファイルに圧縮します。

あとは①で構築したWordPressの管理画面から、外観 > テーマ >新規追加 > テーマのアップロード へアクセス。

ZIPで圧縮したテーマ(suimin.zip)を選択しましょう。

テーマのアップロード後に表示される、今すぐインストールボタンの周辺を示す画面。

今すぐインストールボタンを押すとテーマのインストールが完了します。

まずは自作テーマを有効化してみましょう。

テーマ名だけ表示されています。

インストールした自作テーマを有効化した直後の、テーマ名だけが表示された管理画面。

サイトのトップページを表示してみましょう。

index.phpが空の状態でサイトのトップページを表示した際の、真っ白な表示画面。

index.phpには何も記述していないので、真っ白な画面が表示されます。

ここまではテーマが認識された状態です。空のindex.phpでは本文もWordPressのフックも出力されないため、下記の表示用コードを追加します。

ここから色々、足して自作テーマを改造していきましょう!

テーマ情報を記載するStyle.cssのヘッダーコメントの記述方法

テーマ名だけStyle.cssのヘッダーに記載しました。

Style.cssのヘッダー部分について調べて、テーマ情報とテーマのサムネイルの設定方法をちゃんとしていこうと思います。

/*
    Theme Name: SUIMIN
*/

しかし本来であれば、もう少し詳細の記述が必要になります。

項目テーマ認識の条件備考
Theme Name〇テーマ名
Theme URI–テーマに関連するWebページのURL
Author任意制作者名または組織名
Author URI–制作者名または組織名に関連するWebページのURL
Description任意テーマに関する説明
Tags–テーマ検索用のキーワード。詳細
Version任意XX または XXX 形式で書かれたテーマのバージョン
Requires at least任意テーマが動作する最も古いメインの WordPress バージョン
Tested up to任意テーマがテストされた最後のメインの WordPress バージョン
Requires PHP任意サポートされている最も古い PHP バージョン
License: GNU任意テーマのライセンス
License URI任意テーマ ライセンスの URL
Text Domain任意ドメインに使用される文字列
Domain Path–テーマ検索用の翻訳を見つける場所
Template子テーマのみ必要子テーマにいれるStyle.cssは親テーマのテンプレート名を記載する
Style.cssのコメントに記載する内容
/*
    Theme Name: SUIMIN
    Theme URI: https://suimin-theme.com/
    Author: MOTOKI LLC.
    Author URI: https://motoki-design.co.jp/wordpress/
    Description: A minimal classic theme for learning.
    Tags: blog, block-styles
    Version: 1.0.0
    Requires at least: 5.6
    Tested up to: 5.6
    Requires PHP: 7.3.0
    License: GNU General Public License v2 or later
    License URI: http://www.gnu.org/licenses/gpl-2.0.html
    Text Domain: suimin
    Domain Path: /languages
*/

ちなみに子テーマに入れるstyle.cssの記述は以下の通り。

子テーマの場合はテンプレート名(Template)の記述が必要

/*
    Template: suimin
    Theme Name: SUIMIN Child
    Theme URI: https://suimin-theme.com/
    Author: MOTOKI LLC.
    Author URI: https://motoki-design.co.jp/wordpress/
    Description: SUIMIN Child Theme
    Tags: blog, block-styles
    Version: 1.0.0
    License: GNU General Public License v2 or later
    License URI: http://www.gnu.org/licenses/gpl-2.0.html
    Text Domain: suiminchild
    Domain Path: /languages
*/

参考

テーマ情報の確認

あとは記述したStyle.cssをアップロードして更新します。※FTPを使いました。

自作テーマを選択すると詳細情報が追記されています。

style.cssを更新したあとに自作テーマを選択し、詳細情報が追記された状態を示す画面。

自作WordPressテーマのサムネイル登録

テーマ画像が透明なままなので、以下の仕様の画像を追加してあげます。

画像サイズ幅 880px × 高さ660px
ファイル名screenshot.png
ファイル形式png
自作WordPressテーマのサムネイル

FTPを使ってscreenshot.pngをアップロードします。

サムネイル用画像ファイルをFTP経由でアップロードする作業の様子を示す画面。

テーマのサムネイルが登録されました!

自作テーマにサムネイル画像が正しく反映・登録された状態を示す画面。

まとめ

初めてのWordPress自作テーマということで、超最小構成で構築してみした。

真っ白とはいえ、テーマとして認識・表示できていますので、あとは必要な要素を調べて肉付けしていくだけです。

本ブログでは、これからも自作テーマについて調べたことをまとめる予定です。

最終的には自前のスターターテーマ(自作テーマを作るためのベースの自作テーマ)としてブラッシュアップしていこうと思います。

GitHubの過去の例は今回の修正と同期していません。現行コードは本文を参照してください。過去のコードは、GitHubのMOTOKI-LLC/WAZA-codeにもまとめています。

白い画面から本文を表示するindex.phpへ

作成したindex.phpの中身を以下に置き換えます。本文とページ送りを表示し、プラグインが使うwp_head・wp_body_open・wp_footerも呼び出します。これは表示確認用で、商品販売や会員機能を含む完成テーマではありません。

<!doctype html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo('charset'); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?php echo esc_html(wp_get_document_title()); ?></title>
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
<?php wp_body_open(); ?>
<main>
<?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
    <article>
        <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
        <?php the_content(); wp_link_pages(); ?>
    </article>
    <?php endwhile; ?>
    <?php the_posts_navigation(); ?>
<?php else : ?>
    <p>表示できる投稿がありません。</p>
<?php endif; ?>
</main>
<?php wp_footer(); ?>
</body>
</html>

この2ファイル版はstyle.cssをまだ画面へ読み込みません。次回以降functions.phpでCSSを読み込み、title-tagサポートを追加したら、この例のtitle要素は削除して重複を防ぎます。

2ファイルのテーマで分割本文を確かめる

最小構成のindex.phpとstyle.cssを検証用テーマへ配置し、実WordPressで投稿を開きました。分割した本文の2をEnterで開くと2ページ目の本文に切り替わり、1から戻ると1ページ目の本文が表示されます。PC幅1280pxとスマホ幅390pxで確認しています。

本文を分割して試す場合は、投稿へページ区切りブロックを挿入してください。分割用の区切りがない投稿では番号は出ません。下の画面の「Pages: 1 2」はwp_link_pages()が出力した番号です。投稿一覧のページ送りとは別の機能です。

この段階では装飾用のCSSを読み込んでおらず、通常の文字とリンクで表示されます。見た目を整える前に、本文、番号、移動先を確かめてください。次のヘッダーとフッターの作成でテンプレートを分割します。

本番の使用中テーマへ上書きせず、別の検証用ディレクトリへ配置します。

今回は管理画面での有効化と投稿0件の表示を確認しました。

導入前のテーマ名と原本を保存し、問題が出た場合は元のテーマへ戻してください。

最小構成のテーマで分割本文とページ番号を表示した実画面
2026年10月2日、隔離WordPressで撮影した実画面です。

外観で有効化して投稿0件を確認する

まず検証用WordPressの使用中テーマ名を控え、別のフォルダーにこの記事のstyle.cssとindex.phpを配置します。

管理画面の「外観 → テーマ」でstyle.cssのTheme Nameに指定した名前を探し、「有効化」を選びます。

「有効」と表示されたテーマ名を確認してから、サイトのトップページを開きます。

投稿がない検証環境では、「表示できる投稿がありません。」という案内が出ることを確認します。

この案内が出れば、テーマの認識だけでなく、index.phpの投稿0件の分岐まで実行されています。

記事がある環境で投稿0件を試すために既存記事を削除する必要はありません。

投稿のある場合の本文表示と分割番号の確認は、前節の手順で別に確かめます。

問題があれば「外観 → テーマ」で控えておいた元のテーマを有効化します。

最小構成のテーマを有効化し、投稿0件の案内を表示した検証画面
2026年10月2日撮影。WordPress 7.1.2の独立した検証環境で確認。

ヘッダー項目と戻し方

独立したテーマを認識させるstyle.cssの基本項目はTheme Nameです。Templateは子テーマで親フォルダー名を指定する項目です。その他の情報は配布時の要件と区別してください。上のバージョン値は過去の例で、動作保証ではありません。詳しくは公式のstyle.css仕様を参照してください。

検証環境で投稿あり/なし、ページ送り、PC・スマホの本文表示とリンク操作を確認します。戻すときは外観のテーマ画面から元のテーマを有効化します。管理画面に入れない場合に備え、検証環境のファイルを復元できる状態で進めます。

  • URLをコピーしました!

制作をご依頼いただく場合

WordPressのホームページ制作

サイトの目的と更新方法に合わせて、構成・デザイン・WordPressの構築をご相談いただけます。対応範囲、制作実績、最新の費用・制作期間はサービスページをご確認ください。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次