子テーマの作成の方法と、ちょっとした余談
私自身もテーマを入れ替えて、まず最初に子テーマを作成し始めたので書いておきます。
とは言っても、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');