読者です 読者をやめる 読者になる 読者になる

ファイヤードブログ

ディジタル・パブリッシングという観点から、Webサイト制作、電子書籍制作などを。※ブログリニューアル中

初めてWordPressの子テーマ機能を使った

WordPress WebDev

 なかなか手をつけることのなかった、子テーマによる制作機会があった。頼ったのは日本語版のCodexだけ。これで足りた。ちょっと振り返ってみる。

経緯

 先方から「既存のテーマをアレンジして欲しいのだが、アップデートで上書きされないようにしたい」との申し出があった。公式ディレクトリ掲載テーマではなかったので、「これ以降新しいバージョンが出ても放っておいてください」と言えば、上書きし放題で改修することもできたが、せっかくのいい機会なので子テーマに手を出した、というわけだ。

やり方について

 やり方はCodexみてくださいというしかないのだけれど、自分がしたことを思い出しながら若干触れてみたい。まず、テーマが集まっているディレクトリに新しいテーマ(子テーマ)のためのフォルダを作成する。もちろん、親となるテーマをあらかじめ用意している必要がある。
 次に、style.cssを作成する。これが最低限必要なファイルとなる(index.phpはいらない)。ファイル冒頭のテーマの名前とか説明を書くところに、「Template: 親ファイルの名前」を書く。これで認識される。次に、親のstyle.cssを@importして読み込む。スタイルだけをいじりたいならばこれ以降に好きに書いていけばいい。
 だが、functions.phpも改変したいというときがあるだろう。例えば、今回はメタボックスを追加した。そういうときは、functions.phpを作って、そこに書く。親のそれに追加される形でここでの処理も読み込まれていく。実際の話はもう少し複雑なので詳しくはCodexを参照のこと。
 header.phpなどのテンプレートは、同名のファイルを作成すれば読み込みの際に上書きしてくれる。例えば、header.phpを改変したいときは、親のファイルをまずコピペして、そこから改変して書いていくのがいいと思う。
 ひとつ厄介なのがあって、footer.php内で使われていたget template directory uri()が、どうしても親のディレクトリを参照してしまうということがあった(どういう状況かよくわからないという場合は、事例が特定されないために表現を曖昧にしていることによります)。調べたところ、get_stylesheet_directory_uri()に置き換えたらうまくいった。

url of child theme in wordpress - Stack Overflow

まとめとよくわからなかったこと

 いま紹介したのは、style.cssの書き換え、functions.phpに処理を追加する方法、テンプレートの上書き方法で、これでもそれなりのことができる。けれど、わからないことがいくつかあった。例えば、「元のテーマのfunctions.phpがエラーを出しているのだけれど、コメントオフせずに関数を無効化できないか」とか。

展望

 公式ディレクトリ掲載テーマなんかでも、ほとんどTwenty Somethingと変わらないのでは、というテーマが配布されていることがある。はじめっから、オリジナルなテーマを申請するよりも、他の無料テーマに乗っかる方が掲載までのやり取りの勉強もできていいのかもしれない。
 あと、今回、先方が使っていたテーマは公式ディレクトリ掲載テーマじゃなかったのだけれど、いくつかエラーを出していた。やっぱり、オリジナルテーマを開発するものとしては、一度くらいは掲載までのやりとりでしごかれるべきか。