📋 目次

  1. 子テーマとは何か・なぜ必要か
  2. 子テーマの作成手順
  3. カスタマイズを子テーマに移行する
  4. functions.phpの使い方
  5. よくある失敗と対処法
  6. よくある質問

子テーマとは何か・なぜ必要か

子テーマ(Child Theme)とは、既存のテーマ(親テーマ)の機能とデザインを引き継ぎながら、独自のカスタマイズを追加できるテーマです。

子テーマが必要な理由

⚠️ 親テーマを直接編集するリスク:テーマのCSSやfunctions.phpを直接編集すると、テーマがアップデートされた際にその変更がすべて上書きされて消えてしまいます。

子テーマを使うと:

💡 子テーマが不要なケース:Cocoon・SWELL・Snow Monkeyなど、日本語対応の高機能テーマは、テーマのカスタマイズ機能が充実しており、子テーマを使わなくても安全にカスタマイズできる仕組みを持っている場合があります。テーマのドキュメントを確認してください。

子テーマの作成手順

子テーマはわずか2つのファイルを作成するだけで完成します。

子テーマ用フォルダを作成する

FTPまたはサーバーのファイルマネージャーで /wp-content/themes/ フォルダの中に子テーマ用のフォルダを作成します。フォルダ名は親テーマ名に -child を付けた名前が慣例です。

例:親テーマが「twentytwentyfive」の場合
→ /wp-content/themes/twentytwentyfive-child/

style.cssを作成する

子テーマフォルダの中に style.css を作成し、以下の内容を記述します。Template: の部分は親テーマのフォルダ名と完全に一致させることが重要です。

/*
Theme Name: Twenty Twenty-Five Child
Theme URI: https://example.com/
Description: Twenty Twenty-Fiveの子テーマ
Author: あなたの名前
Template: twentytwentyfive
Version: 1.0.0
*/

/* ここから下に追加のCSSを記述する */
⚠️ Templateの記述に注意:Template には親テーマのフォルダ名を正確に記述してください(テーマ名ではなくフォルダ名)。大文字・小文字・スペースも含めて完全一致が必要です。

functions.phpを作成する

子テーマフォルダの中に functions.php を作成し、以下の内容を記述します。これにより親テーマのスタイルシートが読み込まれます。

<?php
// 親テーマのスタイルシートを読み込む
function child_theme_enqueue_styles() {
    wp_enqueue_style(
        'parent-style',
        get_template_directory_uri() . '/style.css'
    );
}
add_action('wp_enqueue_scripts', 'child_theme_enqueue_styles');

管理画面で子テーマを有効化する

WordPress管理画面の「外観」→「テーマ」を開くと、作成した子テーマが表示されます。「有効化」をクリックして完了です。

✅ 確認方法:有効化後、「外観」→「テーマ」でサイトのURLに ?ver= が含まれているか、また管理画面上部に「今すぐ更新」が表示されていないことを確認してください。

カスタマイズを子テーマに移行する

現在のテーマに直接加えたカスタマイズを子テーマに移行する方法です。

CSSの移行

親テーマの style.css に直接追加したCSSは、子テーマの style.css にコピーします。カスタマイザーの「追加CSS」に入力していたCSSも、子テーマの style.css にコピーするか、引き続きカスタマイザーを使ってもOKです。

/* 子テーマのstyle.css */
/*
Theme Name: My Child Theme
Template: 親テーマのフォルダ名
*/

/* 移行したCSSをここに記述 */
.site-header {
    background-color: #2c3e50;
}
.entry-title {
    font-size: 1.8rem;
}

PHPコードの移行

親テーマの functions.php に追加したPHPコードは、子テーマの functions.php にコピーします。

<?php
// 子テーマのfunctions.php

// 親テーマのスタイル読み込み(必須)
function child_theme_enqueue_styles() {
    wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
}
add_action('wp_enqueue_scripts', 'child_theme_enqueue_styles');

// 移行したカスタムコードをここに追加
function my_custom_function() {
    // ...
}
add_action('wp_head', 'my_custom_function');

functions.phpの主な使い方

子テーマのfunctions.phpでよく使われる記述例を紹介します。

カスタムCSSを追加する

// 追加のCSSファイルを読み込む
function child_enqueue_custom_style() {
    wp_enqueue_style(
        'child-custom-style',
        get_stylesheet_directory_uri() . '/custom.css',
        array(),
        '1.0.0'
    );
}
add_action('wp_enqueue_scripts', 'child_enqueue_custom_style');

カスタムJavaScriptを追加する

// カスタムJSを読み込む(フッターに追加)
function child_enqueue_custom_script() {
    wp_enqueue_script(
        'child-custom-script',
        get_stylesheet_directory_uri() . '/custom.js',
        array('jquery'),
        '1.0.0',
        true  // trueでフッターに出力
    );
}
add_action('wp_enqueue_scripts', 'child_enqueue_custom_script');

Google Fontsを追加する

// Google Fontsを読み込む
function child_enqueue_google_fonts() {
    wp_enqueue_style(
        'google-fonts',
        'https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;700&display=swap',
        array(),
        null
    );
}
add_action('wp_enqueue_scripts', 'child_enqueue_google_fonts');

よくある失敗と対処法

失敗1:子テーマを有効化したらデザインが崩れた

原因:親テーマのスタイルシートが読み込まれていない。
対処:functions.phpの wp_enqueue_style の記述を確認してください。特に get_template_directory_uri()(親テーマのパス)と get_stylesheet_directory_uri()(子テーマのパス)を混同しないよう注意。

失敗2:Templateの指定が間違っている

原因:style.cssの Template: に親テーマのフォルダ名ではなくテーマ名を記述している。
対処:FTPで /wp-content/themes/ フォルダを確認し、親テーマの正確なフォルダ名を確認して修正してください。

失敗3:子テーマの更新が管理画面に表示されない

原因:style.cssに Version: が記載されていない。
対処:style.cssのヘッダーに Version: 1.0.0 を追加してください。子テーマ自体は自動更新されないため、自分でバージョンを管理します。

失敗4:functions.phpの構文エラーでサイトが真っ白になった

原因:PHPの記述ミス(閉じ括弧の不足・全角スペースの混入など)。
対処:FTPでfunctions.phpを修正してください。修正が難しい場合はファイルを削除(または別名に変更)してサイトを復旧させてから、再度正しいコードを記述してください。

よくある質問

Q1. すべてのテーマで子テーマを作れますか?

A. 技術的にはほぼすべてのテーマで子テーマを作成できます。ただし、一部のページビルダー系テーマ(Elementorなど)は子テーマの仕組みが異なる場合があります。テーマのドキュメントを確認してください。

Q2. 子テーマを作ると親テーマより動作が遅くなりますか?

A. ほとんどの場合、体感できるほどの速度差はありません。子テーマのstyle.cssが追加で読み込まれますが、影響はごくわずかです。

Q3. 子テーマを削除したら親テーマも消えますか?

A. いいえ、子テーマと親テーマは独立したフォルダです。子テーマを削除しても親テーマには影響しません。ただし、子テーマを削除する前に必ず親テーマまたは別のテーマを有効化してください。

Q4. 子テーマのCSSで親テーマのスタイルを上書きできますか?

A. はい、できます。子テーマのstyle.cssに記述したCSSは親テーマのCSSより後に読み込まれるため、同じセレクターを使えば上書きできます。どうしても効かない場合は !important を使うか、より詳細なCSSセレクターを使ってください。

関連ページ