子テーマの作成の方法と、ちょっとした余談

子テーマの作成の方法と、ちょっとした余談

私自身もテーマを入れ替えて、まず最初に子テーマを作成し始めたので書いておきます。

とは言っても、WordPress関連の他サイト様に書かれていることと被ってしまいますが・・・念のために。

 

modellaxのテーマに限ったことではありませんが、通常、管理画面からのアップデートを行うタイプのテーマ(公式テーマ、サードパーティ製のテーマ問わず)は、大本のテーマの改変を行っている場合、アップデート時に上書きされてしまうのが常。

こういったときに大本のテーマのテイストは残したいけど、少しだけ改変したいと言った際に役に立つのが「小テーマ」。

 

WordPressの子テーマの作成方法は細かいことを抜きにしたら実に単純であり、必要なファイルは以下のようになっています。

  • 子テーマのディレクトリ
    • functions.php
    • style.css

たったこれだけで子テーマそのものは作成が可能です。

 

これらのファイルの中に書くコードとしては、当サイトで配布しているテーマがベースになっていますが、以下のように記述できます。

全く別の他のテーマをお使いの場合も、「Materialike」「materialike」等の文字列を置き換えれば同様の方法で子テーマ化が可能です。

 

functions.php

<?php
/**
 * Materialike Child Functions
 *
 * @package Your Name
 * @subpackage Materialike
 * @since Materialike
 */

function materialike_child_enqueue_scripts(){

	wp_enqueue_style( 'materialike-parent-style', get_template_directory_uri().'/style.css' );
	wp_enqueue_style( 'materialike-child-style', get_stylesheet_directory_uri().'/style.css', array('parent-style') );

}
add_action( 'wp_enqueue_scripts', 'materialike_child_enqueue_scripts' );

 

style.css

/*
Theme Name: Materialike Child
Theme URI: https://modellax.net
Description: your description
Author: Your Name
Author URI: https://modellax.net
Template: materialike ←親テーマの実体名
Version: 0.1.0
Tags: tags
Text Domain: materialike-child
*/

 

こんな感じで非常に簡潔に書くことができます。

 

一応、Materialike用の子テーマのキットを作成しました。→こちら

上記と同じく、全く別の他のテーマをお使いの場合は、適宜置換すると良いと思います。

 

 

ちなみに、これに合わせての余談ですが、子テーマを作成していざ親テーマの関数をfunctions.phpでフィルターフックやアクションフック等で呼び出す際に、PHPのCall to undefined functionのエラーが発生する場合があります。

これは単純に書いてあるとおりの「そんな関数がないよ」と言ったエラーですが、親テーマと子テーマの間でそれが発生するときのメカニズムとして「子テーマのfunctions.php」→「親テーマのfunctions.php」の順でfunctions.phpが読まれていることが挙げられます。

(他のテンプレートに関しては「子テーマのテンプレート.php」→「親テーマのテンプレート.php」となっている)

 

これが発生した場合、フックの種類やタイミングにもよりますが、大抵の場合は以下のような形で解決可能です。多分。

 

function theme_child_after_setup_theme(){
	// 実行関数
}
add_action('after_setup_theme', 'theme_child_after_setup_theme');