子テーマ
子テーマは、親テーマ(既存のテーマ)の機能やデザインを継承しながら、独自のカスタマイズを加えられる仕組みです。親テーマが更新されても、子テーマで行ったカスタマイズは失われません。テーマを安全にカスタマイズしたい場合に必須の機能で、CSSの変更、テンプレートファイルの追加、functions.phpへのコード追加などを、親テーマに影響を与えずに行えます。
子テーマとは
子テーマは、親テーマのすべての機能とスタイルを引き継ぎながら、必要な部分だけをカスタマイズできるテーマです。親テーマを直接編集せずにカスタマイズできるため、テーマ更新時にカスタマイズ内容が消える心配がありません。
親テーマと子テーマの関係
💡 親子関係のイメージ
親テーマ:基本となるテーマ(例:Twenty Twenty-Four)
↓ 機能・デザインを継承
子テーマ:カスタマイズ専用テーマ
親テーマ + 子テーマのカスタマイズ = 実際のサイト表示
親テーマ:基本となるテーマ(例:Twenty Twenty-Four)
↓ 機能・デザインを継承
子テーマ:カスタマイズ専用テーマ
親テーマ + 子テーマのカスタマイズ = 実際のサイト表示
子テーマが必要な理由
⚠️ 親テーマを直接編集した場合の問題
シナリオ:Twenty Twenty-Fourテーマのstyle.cssを直接編集
1. CSSを変更してデザインをカスタマイズ
2. 数ヶ月後、テーマが更新される
3. 「更新」ボタンをクリック
4. すべてのカスタマイズが消える!
→ テーマファイルが上書きされ、変更内容が失われます
シナリオ:Twenty Twenty-Fourテーマのstyle.cssを直接編集
1. CSSを変更してデザインをカスタマイズ
2. 数ヶ月後、テーマが更新される
3. 「更新」ボタンをクリック
4. すべてのカスタマイズが消える!
→ テーマファイルが上書きされ、変更内容が失われます
✅ 子テーマを使用した場合
1. 子テーマのstyle.cssにCSSを追加
2. 親テーマが更新される
3. 「更新」ボタンをクリック
4. カスタマイズはそのまま保持!
→ 子テーマのファイルは別フォルダなので影響を受けません
1. 子テーマのstyle.cssにCSSを追加
2. 親テーマが更新される
3. 「更新」ボタンをクリック
4. カスタマイズはそのまま保持!
→ 子テーマのファイルは別フォルダなので影響を受けません
子テーマのメリット
- 安全なカスタマイズ:親テーマ更新時もカスタマイズが保持される
- 簡単な修正:問題が起きても子テーマを無効化すれば元に戻る
- 開発効率:親テーマの機能を活用しながら独自機能を追加できる
- バックアップ容易:子テーマフォルダだけをバックアップすればよい
- 学習に最適:既存テーマをベースに学べる
子テーマの作成方法
子テーマの作成は、実は非常にシンプルです。最低限、2つのファイルがあれば動作します。
方法1:手動で作成(推奨)
必要なファイル
- style.css - スタイルシートファイル(必須)
- functions.php - 機能追加ファイル(必須)
ステップバイステップ作成手順
-
子テーマフォルダを作成
FTPまたはサーバーのファイルマネージャーで、/wp-content/themes/に新しいフォルダを作成します。
フォルダ名例:twentytwentyfour-child(親テーマ名 + -child) -
style.cssを作成
子テーマフォルダ内にstyle.cssファイルを作成し、以下のコードを記述します。 -
functions.phpを作成
子テーマフォルダ内にfunctions.phpファイルを作成し、親テーマのスタイルシートを読み込むコードを記述します。 -
子テーマを有効化
「外観」→「テーマ」から子テーマを見つけて「有効化」をクリックします。
style.cssの記述例
/*
Theme Name: Twenty Twenty-Four Child
Theme URI: https://example.com
Description: Twenty Twenty-Fourの子テーマ
Author: あなたの名前
Author URI: https://example.com
Template: twentytwentyfour
Version: 1.0.0
Text Domain: twentytwentyfour-child
*/
/* ここにカスタムCSSを追加 */
⚠️ 重要なヘッダー項目
Template: この項目が最も重要です。親テーマのフォルダ名を正確に指定してください。間違えると子テーマが動作しません。
Template: この項目が最も重要です。親テーマのフォルダ名を正確に指定してください。間違えると子テーマが動作しません。
functions.phpの記述例
<?php
/**
* 子テーマのfunctions.php
*/
// 親テーマと子テーマのスタイルシートを読み込む
function my_theme_enqueue_styles() {
// 親テーマのスタイルシート
wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
// 子テーマのスタイルシート
wp_enqueue_style('child-style',
get_stylesheet_directory_uri() . '/style.css',
array('parent-style'), // 親スタイルの後に読み込む
wp_get_theme()->get('Version')
);
}
add_action('wp_enqueue_scripts', 'my_theme_enqueue_styles');
?>
方法2:プラグインで作成(初心者向け)
コードを書くのが不安な方は、プラグインで簡単に作成できます。
Child Theme Configuratorプラグイン
-
プラグインをインストール
「プラグイン」→「新規追加」で「Child Theme Configurator」を検索してインストール・有効化します。 -
設定画面を開く
「ツール」→「Child Themes」を選択します。 -
親テーマを選択
「親テーマを選択」ドロップダウンから親テーマを選びます。 -
分析実行
「分析」ボタンをクリックして親テーマをチェックします。 -
子テーマを作成
必要な情報を入力し、「子テーマを作成」ボタンをクリックします。 -
有効化
作成後、自動的に子テーマが有効化されます。
✅ プラグインのメリット
- コードを書かずに作成できる
- 親テーマのCSSを自動コピーできる
- スクリーンショットも自動生成
- エラーチェック機能あり
子テーマでカスタマイズする方法
1. CSSのカスタマイズ
最も一般的なカスタマイズです。子テーマのstyle.cssにCSSを追加します。
例:ヘッダーの背景色を変更
/* style.css */
/* ヘッダーの背景色を青に変更 */
.site-header {
background-color: #1976D2;
}
/* 見出しのフォントサイズを大きく */
h1 {
font-size: 2.5rem;
}
/* リンクの色を変更 */
a {
color: #FF6B35;
}
a:hover {
color: #FF8555;
}
💡 CSSの優先順位
子テーマのCSSは親テーマのCSSの後に読み込まれるため、同じセレクタの場合は子テーマの指定が優先されます。
子テーマのCSSは親テーマのCSSの後に読み込まれるため、同じセレクタの場合は子テーマの指定が優先されます。
2. テンプレートファイルのカスタマイズ
親テーマのテンプレートファイルを上書きできます。
テンプレートファイルの上書き手順
-
親テーマからコピー
親テーマフォルダから編集したいファイル(例:header.php)をコピーします。 -
子テーマに配置
コピーしたファイルを子テーマフォルダに貼り付けます。 -
編集
子テーマのファイルを編集します。親テーマのファイルは触りません。 -
自動的に優先
WordPressは自動的に子テーマのファイルを優先して使用します。
⚠️ 注意点
テンプレートファイル全体をコピーするため、親テーマの更新で追加された新機能が反映されません。必要最小限のカスタマイズに留めましょう。
テンプレートファイル全体をコピーするため、親テーマの更新で追加された新機能が反映されません。必要最小限のカスタマイズに留めましょう。
3. functions.phpへの機能追加
子テーマのfunctions.phpに独自の機能を追加できます。
例:カスタム機能の追加
<?php
// 子テーマのfunctions.php
// カスタムロゴサポート
function mytheme_custom_logo_setup() {
add_theme_support('custom-logo', array(
'height' => 100,
'width' => 400,
'flex-height' => true,
'flex-width' => true,
));
}
add_action('after_setup_theme', 'mytheme_custom_logo_setup');
// カスタムウィジェットエリア
function mytheme_widgets_init() {
register_sidebar(array(
'name' => 'カスタムサイドバー',
'id' => 'custom-sidebar',
'before_widget' => '<div class="widget">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>',
));
}
add_action('widgets_init', 'mytheme_widgets_init');
// 抜粋の文字数を変更
function mytheme_excerpt_length($length) {
return 100;
}
add_filter('excerpt_length', 'mytheme_excerpt_length');
?>
4. 画像ファイルの追加
子テーマ専用の画像を配置できます。
推奨フォルダ構造
twentytwentyfour-child/
├── style.css
├── functions.php
├── screenshot.png(子テーマのスクリーンショット)
└── images/
├── logo.png
├── header-bg.jpg
└── icon.svg
CSSで画像を参照
/* style.css */
.site-header {
background-image: url('images/header-bg.jpg');
}
.custom-logo {
background-image: url('images/logo.png');
}
子テーマのファイル構成例
シンプルな子テーマ
twentytwentyfour-child/
├── style.css (必須)
└── functions.php (必須)
本格的な子テーマ
twentytwentyfour-child/
├── style.css
├── functions.php
├── screenshot.png
├── header.php
├── footer.php
├── single.php
├── page.php
├── template-parts/
│ ├── content.php
│ └── content-single.php
├── images/
│ ├── logo.png
│ └── bg.jpg
├── js/
│ └── custom.js
└── css/
└── additional.css
各ファイルの役割
| ファイル名 | 役割 | 必須/任意 |
|---|---|---|
| style.css | スタイルシート、テーマ情報 | 必須 |
| functions.php | 機能追加、親テーマ読み込み | 必須 |
| screenshot.png | テーマのスクリーンショット | 任意 |
| header.php | ヘッダーテンプレート | 任意 |
| footer.php | フッターテンプレート | 任意 |
| single.php | 個別投稿テンプレート | 任意 |
子テーマ使用時の注意点
1. 親テーマの選択
💡 子テーマに適した親テーマ
- Twenty Twenty-Four: 最新の公式テーマ
- Astra: 軽量で拡張性が高い
- GeneratePress: パフォーマンス重視
- OceanWP: 多機能
⚠️ 避けるべき親テーマ
・開発が停止しているテーマ
・更新頻度が低いテーマ
・ドキュメントが不足しているテーマ
・セキュリティ問題があるテーマ
・開発が停止しているテーマ
・更新頻度が低いテーマ
・ドキュメントが不足しているテーマ
・セキュリティ問題があるテーマ
2. パフォーマンスへの影響
子テーマ自体はパフォーマンスにほとんど影響しません。ただし、以下の点に注意:
- 不要なCSSは削除する
- 画像は最適化してアップロード
- JavaScriptは最小限に
- functions.phpに重い処理を書かない
3. テーマ更新時の確認
-
バックアップ取得
親テーマ更新前に、サイト全体のバックアップを取ります。 -
ステージング環境でテスト
可能であれば、本番環境以外でテストします。 -
更新実行
親テーマを更新します。 -
表示確認
サイトが正常に表示されるか確認します。 -
機能テスト
カスタマイズした部分が正常に動作するか確認します。
4. functions.phpの記述順序
⚠️ 重要
子テーマのfunctions.phpは、親テーマのfunctions.phpの前に読み込まれます。そのため、親テーマの関数を上書きする場合は、優先順位に注意が必要です。
子テーマのfunctions.phpは、親テーマのfunctions.phpの前に読み込まれます。そのため、親テーマの関数を上書きする場合は、優先順位に注意が必要です。
5. デバッグモード
開発中は、WordPressのデバッグモードを有効にすると便利です。
// wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
よくある質問(FAQ)
Q1. 子テーマは必ず作る必要がありますか?
テーマをカスタマイズする予定がある場合は、必ず子テーマを作成してください。たとえ小さなCSS変更でも、テーマ更新時に失われる可能性があります。逆に、テーマをまったくカスタマイズせず、そのまま使用する場合は不要です。
Q2. 既にテーマを直接編集してしまいました。子テーマに移行できますか?
はい、移行できます。まず子テーマを作成し、親テーマで編集した内容(CSS、テンプレートファイルなど)を子テーマにコピーします。その後、子テーマを有効化してください。ただし、親テーマを更新する前に移行しないと、カスタマイズが失われるので注意してください。
Q3. 子テーマだけをバックアップすれば大丈夫ですか?
いいえ、子テーマだけでは不十分です。子テーマは親テーマに依存しているため、両方が必要です。また、データベース、プラグイン、アップロードした画像なども含めた完全なバックアップを取ることをおすすめします。
Q4. 親テーマを削除しても、子テーマは動作しますか?
いいえ、動作しません。子テーマは親テーマの機能を継承して動作するため、親テーマが必要です。親テーマを削除すると、サイトが表示されなくなります。親テーマと子テーマは常にセットで保持してください。
Q5. 子テーマから親テーマに戻すことはできますか?
はい、いつでも戻せます。「外観」→「テーマ」から親テーマを有効化するだけです。子テーマで行ったカスタマイズは反映されなくなりますが、子テーマ自体は残るので、再度有効化すればカスタマイズが復活します。
Q6. 子テーマの子テーマは作れますか?
技術的には可能ですが、推奨されません。管理が複雑になり、パフォーマンスにも影響します。基本的には「親テーマ→子テーマ」の2階層までに留めてください。複雑なカスタマイズが必要な場合は、独自テーマの作成を検討しましょう。
まとめ
子テーマは、WordPressテーマを安全にカスタマイズするための必須の仕組みです。親テーマの更新を気にせずカスタマイズでき、問題が起きても簡単に元に戻せます。
✅ 子テーマ作成のチェックリスト
- カスタマイズ前に子テーマを作成する
- style.cssとfunctions.phpを正しく設定する
- Template項目に親テーマ名を正確に記述する
- 親テーマのスタイルシートを適切に読み込む
- 子テーマを有効化して動作確認する
- カスタマイズは子テーマのファイルのみ編集する
- 定期的に子テーマをバックアップする
- 親テーマ更新時は必ず表示確認する
初めての方は、プラグインを使って子テーマを作成することをおすすめします。慣れてきたら、手動で作成することで、より深くWordPressテーマの仕組みを理解できます。