【Wordpress】子テーマって本当に便利なの?
も・く・じ
子テーマは便利だと人は言います。
でも実際には大して必要がないものだと思うようにもなってきました。
本当に子テーマって便利なの?
子テーマのメリット
子テーマっていうのは、ワードプレスをインストールした際にデフォルトで作られるテーマ(header.phpやsingle.phpなどのテンプレート群)をカスタマイズするための専用テーマのことです。
そのためデフォルトのWordpressテーマは親テーマとも言われます。
子テーマの作り方はここでは割愛します。
子テーマ作りで多いと思われるのは、例えばheader.phpをカスタマイズしようとしたとき、親テーマのheader.phpをコピーして子テーマ専用フォルダ内にペーストすることでしょう。
その後に子テーマ内のheader.phpを編集していくというものですね。
こうすればたとえ親テーマがアップデートされて機能などが変更されたとしても子テーマはその影響を受けないので、カスタマイズ内容が消えることはありません。
これが子テーマを作る最大の理由です。
(だからカスタマイズを一切せずにワードプレスを使う方には無縁の話です)
子テーマってちょっと特殊
ところがこの子テーマ、若干ややこしい動作をいたします。
たとえばheader.phpやsingle.phpなどはファイルごと子テーマ内にコピーペーストしてカスタマイズします。
この場合ワードプレスは子テーマ内のheader.phpやsingle.phpを読みに行きます。
親テーマ内のheader.phpやsingle.phpは無視されます。
一方、子テーマ内のstyle.cssは、変更点(つまりカスタマイズしたい部分)だけを書くだけで問題なく動作します。
つまり子テーマ内のstyle.cssは親テーマのstyle.cssに追加される感じですね。
もちろん親テーマのstyle.cssを全部まるっとコピーペーストしてカスタマイズしてもOK。
ただしその際はheader.phpやsingle.phpと違って、下記のように決められた形式の記述の後ろに親テーマのstyle.cssの中身をコピペする必要があります。
0 1 2 3 4 5 6 7 8 |
↓これらが子テーマの冒頭に書く最低限の記述一例↓ /* Theme Name:(子テーマ名) Template:(親テーマ名) */ /*ここから下に親テーマのstyle.cssをコピーペースト*/ |
子テーマだけのstyle.cssを読み込んだり、子テーマ→親テーマという順でstyle.cssを読み込ませたりと設定次第ではいろいろできないこともないです。
この辺のところはテーマ側である程度お膳立てしてくれてると便利ですね。
子テーマのデメリット
子テーマで厄介なのがfunctions.php。
これは子テーマにfunctions.phpがあればそっちを先に読み込み、その後に親テーマのfunctions.phpを読みに行くという、他のテンプレートファイルとは全く逆の動作をしてきます。
その上両方のfunctions.phpに同じ記述が1個でもあるとページが白紙になることもあるという、まさに取扱要注意ファイルなんですね。

functions.php以外にも厄介なファイルがあります。
それが親テーマ内にテーマ制作者が独自に作ったファイルやフォルダです。
ワードプレスの仕様なのか、はたまたプラグインの干渉などによるものかはわかりませんが、それらのファイルをカスタマイズしようとフォルダごと子テーマにコピペしても全く反映されないこともしばしば。
そうなるとやむを得ず親テーマのファイルを直接カスタマイズするしか方法はありません。
でもそれじゃ子テーマの意味がなくなっちゃう。
こんなふうに子テーマって決して扱いやすいテーマとは思えないんですよ。

そして子テーマのメリットとしていろんなところで声高らかに謳われてる「親テーマがアップデートしても子テーマにはなんら影響を及ぼさないからアップデートでカスタマイズ内容が消えることがない!」って話。
これ、決して”メリット”というわけではない気がするのですよ。
たとえば子テーマでsingle.phpをカスタマイズしてあるサイトで、アップデートで親テーマのsingle.phpの内容が一部変更になって新機能が追加されたとします。
しかし子テーマのsingle.phpの内容はアップデートで変わることはないわけですから、せっかくの新機能も子テーマを作ってる限り日の目を浴びることはないんです。
さらに、(こんな例は滅多にないと思いますがわかりやすくするために)
<div id="sample">(HTMLコード)</div>
という指定だったのがアップデートで
<div class="sample">(HTMLコード)</div>
とでもなったとしましょう。
こうなるとid="sample"として設定してあるカスタマイズは何の意味もなくなっちゃいます。
最悪の場合、表示レイアウトが大幅に崩れる可能性だってあります。
こんな感じで親テーマ側で修正が生じて内部の記述が変わったり新機能の追加があったとき、(一切変更されない・上書きされない)子テーマ側では修正や新機能の追加に対応できず、逆にその”恩恵”が足かせとなる場合だってありえるんですね。
こういったことが面倒と感じた私は”それなら子テーマなんか使うのや~めよ”ってなことにしたわけです。
結果、子テーマは必要なし
じゃあ、親テーマがアップデートされた場合はどうするのかって話ですよね。
その場合は、ポチッとアップデートボタンを素直に押しちゃいます。
もしくはアップデートファイルで全部上書きしちゃいます。
といってもそれを実行するのはバックアップを予めしっかりとった上でのことですよ。
ファイルを開いてコピー→テキストファイルにペースト(保存)しておくもよし、FFFTPなどを使って定期的にサーバーから全ファイルをダウンロードしておくでもよし。
カスタマイズした時は定期的なバックアップ作業が必要になります。
これがあれば万が一なんかあってもすぐに差し替えられますし、再度親テーマをそれまでのカスタマイズ仕様に戻す時にも役立ってくれます。
ちなみにアップデート後の親テーマの修正点をいちいち探し出すのが大変なのでは?という考えもあるでしょう。
私の場合は修正したテンプレートファイル名をメモしておき、アップデート後は該当するファイルを『テキスト比較ツール』というウェブサービスを使って変更点をあぶりだしながら必要に応じて親テーマを修正していくという方法を取ってます。
それに、テーマのアップデートって、そんなにひんぱんに起きるもんでもないですよ。
だから私はアップデートなど気にせず、親テーマをガンガンカスタマイズしてます。
記事はお役にたてましたか?
記事に興味をもっていただけたらソーシャルボタンでの共有お願いします^^
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓