「子テーマ」でWordPressテーマの上書きを阻止する – Twenty Tenを1.1にアップデートしたら…

WordPressの管理室「ダッシュボード」において、現在使用しているテンプレートテーマ「Twenty Ten」の更新のお知らせがあったので、さっそく「1.0」から「1.1」にアップデートしてみました。

Twenty Ten 1.1について

Twenty Ten

アップデートはボタンをワンクリックするだけで終了。アップデート内容については、ダッシュボード内では確認できませんでしたが、以下で確認できます。ソースコードの整理がメインで、さほど大きな変更はなかった模様です。

『WordPress.ORG』のForums「Changes Twentyten 1.0 >> 1.1」に、Twenty Tenのコードを書かれたというAndrew Nacinさんのアップデートに関する発言(英語)があります。

また、日本語で確認できるものとしては、『Odysseygate.com』に大変詳しくまとめられたものがあります。⇒Twenty Ten 1.1 の変更点とアップデートの注意点

今回のアップデートの具体的なソースコードの変更内容については、『WordPress trac』にて確認できます。

「子テーマ」でアップデートによるファイルの上書きを防止する

それはさておき、今回のアップデートを実行すると、腹立たしいことに以前に自分で変更を加えていた「header.php」、「footer.php」、「style.css」などがすべて新しいファイルに上書きされてしまっていました…。予想はできたことですが…。

今後もアップデートのたびに上書きされてしまってはたまったもんじゃないと、ちょっと調べてみたところ、さすがはWordPress!!うまくできていますね。『WordPress Codex』によると「子テーマ」というものを自分で設定できるようになっていて、この「子テーマ」を利用することで、「親テーマ」自体のファイルを変更することなく、デザインなどのカスタマイズができるようになっているということでした。

子テーマの設定は簡単です。基本的な設定方法は以下の通りです。

  1. FTP接続して、「wp-content/themes」内に子テーマ用のディレクトリを新たに作成する。(ディレクトリ名は任意)
  2. 作成したディレクトリに「style.css」ファイルを作成する。
  3. WordPress管理室の「外観>テーマ」に、利用可能なテーマとして表示されるので「有効化」する。

で、新たに作成したstyle.cssには、最低でも「子テーマ名」と「親テーマのディレクトリ名」がヘッダー情報として必要となります。以下を記載します。 ※上記3の手順で有効化しておくと、WordPress管理室の「外観>テーマ編集」から編集できるようなります。

/*
Theme Name:Kid(子テーマ名、名称は任意)
Template:twentyten(親テーマのディレクトリ名、大文字小文字を区別する )
*/
子テーマのstyle.css

それから、子テーマのstyle.cssは親テーマのstyle.cssをオーバライドするため、親テーマのstyle.cssをインクルードしておく必要があります。ヘッダー情報に続いて以下を記載します。

@import url('../twentyten/style.css');
子テーマのstyle.css

作成した子テーマ用のディレクトリには、functions.phpやその他のテンプレートファイルも置くことができます。基本的に子テーマに置いた「テンプレートファイル」は親テーマの同名のファイルをオーバーライド(上書き)しますが、「functions.php」だけは特殊で、オーバーライドせずに親のfunctions.phpに追加されて読み込まれる仕組みになっています

今回のアップデートでテンプレートファイルとしてはheader.phpとfooter.phpが上書きされてしまったので、次回からは新たに作成した子テーマ用のディレクトリにheader.phpとfooter.phpをアップロードして、こちらのファイルを変更していくということになります。

そんな感じで、「子テーマ」の設定について理解を深めるためにも、もうしばらく「Twenty Ten」のお世話になりそうです。

コメント一覧

  1. 検索でこちらにたどり着きました。
    私も全く同じ理由で困っておりました。解決方法があるんですね。
    デフォルトテンプレートカスタマイズしたいんで、子テンプレート機能試してみます。
    わかりやすかったので、記事を引用させていただきました。ありがとうございました :D

    サトウ  返信

  2. サトウさま

    コメントありがとうございます。

    > 私も全く同じ理由で困っておりました。解決方法があるんですね。
    > デフォルトテンプレートカスタマイズしたいんで、子テンプレート機能試してみます。

    「子テーマ」、大変便利な機能ですね。その後、ご活用されていますか?
    WordPressには、同じような隠れた便利機能がまだまだありそうですね。

    mae  返信

  • 必須

コメント