wordpressの子テーマって何?作り方は?

wordpress

子テーマとは

親テーマを部分的に置き換え使う方法です。
本体の親テーマはそのままに、子テーマとして部分的に置き換えるテーマのことです。WordPressはテーマを参照する時に「…wp-content/themes」の中で子テーマが選択されている場合、親テーマより優先して子テーマの内容を読み込みます。親テーマに手を加えることなく修正が行えるので便利です。

 

子テーマで作るもの

以下の3つにものが必要です。(functions.phpは、スタイルに直接親テーマを読み込む場合は無くてもいい)

・子テーマディレクトリ
・style.css スタイルシート(以下内部記述について)
・functions.php

 

 

・子テーマディレクトリ

(フォルダ名前は「-child」という接尾辞を付けるのが推奨されています。「rongkk」の子テーマを作成するなら、「rongkk-child」です。)

 

・style.css スタイルシート(以下内部記述について)

@charset "UTF-8";
@import url(“../●●●/style.css”);←←←←←←←←←
ここに親テーマのスタイルシートを一度読み込み、その後、下記子テーマで指定したものに置き換わる。ただし、「style.css」に「@import」を使用した作成方法を見かけますが、サイトのスピードが遅くなるので、子テーマfunctions.phpにて読み込み指示するのがいいともある。

/*
Template:twentytwelve  ←←←←←←←←←
ここに親テーマ(これが基準になって子テーマだと判断されます。テーマディレクトリ(フォルダ)名やスタイルシートのTheme Name:では
判断されないのでTheme Nameやテーマディレクトリ(フォルダ)名は-childまたは_childと判りやすくするのがいいです。)
Theme rongkk_child
Theme URI:http://rongkk.com/
Description:rongkk の子テーマです
Author:作者なまえ
Version:1.0
*/
項目説明
「Template」親テーマのディレクトリ名 ※必須 親テーマのディレクトリ名は大文字・小文字を区別するので注意
「Theme Name」子テーマの名前 ※必須
「Theme URI」子テーマのURI(ある場合は、設定する)
「Description」子テーマの説明
「Author」子テーマの作者
「Version」子テーマのバージョン

 

 

・functions.php

function.phpは「親テーマの内容を全て上書きしない」点に注意。読み込みは、子テーマ優先で次に親テーマになります。書き込む内容は、親テーマで削除したいもの、子テーマで新たに追加したい内容になります。あと、style.cssの設定で子テーマのスタイルシートに親テーマのstyle.cssをインポートするように指定(@import url(“../●●●/style.css”))しましたが、スタイルシートに設定すると表示が遅くなるようなので、出来るだけ下記2種類のどちらかで対応するのがいいようです。

スタイルシートを含める書き方1

<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function 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')
);
}
?>

スタイルシートを含める書き方2

<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );

}
?>

親テーマのfunction.php内容を削除し新たな関数を追加する書き方

親テーマの変更箇所(関数)を、削除(remove_action)する処理
上記に対して、変更内容を反映させた関数を、新たに追加(add_action)する処理

// 親テーマにもともと登録されてある関数下記があるとします(例です)
add_action('wp_header','rongkk_layouts',3);

header:WordPressシステムの関数名
theme_layouts:アクション関数名
3:プライオリティ値(3番目の引数は優先度 特定のアクションに関連づけられている関数が実行される優先順序を指定する。小さいほど優先される)
add_action時に省略されている場合もあります。省略されていない場合は同じ値をremove_action時に指定します。

// 子テーマで新たに追加したい関数(例です)
add_action('wp_header','rongkk_layouts_child', 3);

まとめると

削除したい関数を書き
// 親テーマの関数をremove(削除)する関数
function remove_parent_rongkk_actions() {
remove_action('wp_header','rongkk_layouts',3);
}

削除したい関数を削除することを実行する指示を書き
// 上記の関数をWordPressのinitに登録
add_action('init','remove_parent_rongkk_actions');

子テーマとして新たに追加したい関数を書き
// カスタマイズした関数を有効化する
add_action('wp_header','rongkk_layouts_child', 3);

// カスタマイズした関数
function rongkk_layoutsa_child(){
// 関数の中身



}

 

 

参考

LIG INC. ,

Ceatant Official Blog