親子テーマ

Posted by muchag | WordPress |
初回投稿:2011-03-20 (日) 23:34:27 | 最終更新:2011-03-21 (月) 17:11:36

マルチサイト機能が付加され
親子テーマを作れるようになった。

つまりメインブログのテーマ(親テーマ)があり
各ブログで一部変更したい場合は
子テーマを作ることで更新等の作業の煩雑さを抑制できる。

便利~♪

フォルダ構成

wp-content
—- theme
——– 親テーマ
———— style.css
———— index.php
———— header.php
———— sidebar.php
———— footer.php
————
———— (その他必要なもの)
————
———— hoge.php

——– 子テーマ1
———— style.css (必須)
————
———— (親テーマとは異なるファイルのみ)
————
———— hoge.php

——– 子テーマ2
———— style.css (必須)
————
———— (親テーマとは異なるファイルのみ)
————
———— hoge.php

 

style.css
親テーマ

/*
Theme Name: テーマ名 (必須)
Theme URI: テーマの URI
Description: テーマの解説
Version: ヴァージョン
Author: テーマの製作者
Author URI: テーマの製作者の URI
*/

 

子テーマ

@import url(‘../親テーマ名(ディレクトリ名)/style.css’);
/*
Theme Name: テーマ名 (必須)
Theme URI: テーマの URI
Description: テーマの解説
Version: ヴァージョン
Template: 親テーマ名(ディレクトリ名) (必須)
Author: テーマの製作者
Author URI: テーマの製作者の URI
*/

子テーマの style.css に上記赤い2行を記述するだけで
テーマの親子化は完成。

これで、WordPress は、先ず子テーマを読みに行き
子テーマにあるものはそれを適用。
子テーマにないものは親テーマへ読みに行く。

@import ルールの注意

このシナリオでは親テーマのスタイルをほんの少しだけ変更したいのであって、すべてを放棄するわけではありません。子テーマは親テーマの style.css をオーバーライドするので親テーマのスタイルシートに子テーマのスタイルシートを追加するため、@import ルールを明示します。このルールがないと子テーマは指定したサイトタイトルの色以外のスタイルがまったく適用されません。

引用元:WordPress Codex 日本語版 子テーマ

ただし、functions.php だけは動作が異なる。
 

functions.php

functions.php の使用方法

style.css と違い、functions.php は同名ファイルでオーバーライドできません。その代わり、親の functions.php に追加して読み込まれます。正確にいうと、親テーマの functions.php の直前に読み込まれます。したがって、もし親テーマの functions.php で favicon_link() という関数があるとき、子テーマのfunctions.php で同名の関数があれば、子テーマの関数が使用されます。

引用元:WordPress Codex 日本語版 子テーマ

これを読む限り
同名の関数が存在した場合、子テーマの関数が使用される
わけで
それなら親子テーマを用いる趣旨(子テーマに存在するものはそれが優先)に沿っている。
つまり 問題なし 、な気がするんだけど、あちこちのサイトで 問題あり としているのはなぜか・・・。

beginsprite log:WordPress, 子テーマのための親テーマ作成の心構え – functions.php その2
例えば、上記記事には
親→子の順で読み込むから、親の関数が優先される
と書いてあるような気がする。

だからこそ、親の functions.php に

  1. if ( ! function_exists( 'hoge' ) ) {
  2.  
  3. }

このような記述の必要性を訴えていると思うのだが、
真実は如何に。

まぁ、おいおい明らかになるであろう。
 

テンプレートファイル

各種テンプレートファイルも style.css 同様、子テーマ内に用意したものが優先される。

Posted by muchag | WordPress |
初回投稿:2011-03-20 (日) 23:34:27 | 最終更新:2011-03-21 (月) 17:11:36

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment