マルチサイト管理する場合、子テーマも複数?1つにする?考えてみた。

シェアしてもらえたりすると元気出ます。

子テーマ使ってますか?
デザインを選ぶときテーマを選ぶだけでイケてるサイトが出来上がるので非常に便利ですが、そのまま使ってるとテーマをアップデートしたとき自分のカスタマイズが吹っ飛びます。

で、子テーマを使おうと思ったわけですが。

複数サイトでどう管理しようかと思いましたが、めちゃかんたんでした

前提

  • 3つのサイトをマルチサイト運営しているone.hoge.com , two.hoge.com , three.hoge.com
  • 親になるテーマは一つテーマ名:parent_theme

子テーマを作る

重要なのはstyle.css。
以下を記述するだけ。

/*
Theme Name:    [好きな子テーマ名]
Template:      parent_theme
*/

子テーマを適用する

テーマ>新規追加

アップロードボタンをおすとフォームが出現

ファイルをZIP化してアップロードすればstyle.cssのコメントを判断してインストールしてくれます。

これでTheme Nameがフォルダ名になり wp-content/themes/[子テーマ名]になります。

あとは子テーマを選択して適用させましょう。

マルチサイトでは子テーマをどの様に運用すべき?

1サイト1子テーマ

style.cssをのテーマ名を別名にするだけでした。

/*
Theme Name:    one_child
Template:      parent_theme
*/
/*
Theme Name:    two_child
Template:      parent_theme
*/
/*
Theme Name:    three_child
Template:      parent_theme
*/

複数サイト1子テーマ

各サイトごとにブログIDが割り当てられてるので、これをもとに条件分岐させて、インクルードするcssファイルなどを分ける。

header.phpを編集

 // 例えばこんな感じ
<?php if( $blog_id == 1 ) ://親サイトのスタイルシート ?>
    <link rel="stylesheet" href="/style.css" type="text/css" />
<?php elseif($blog_id == 2)://サイトID2のスタイルシート ?>
    <link rel="stylesheet" href="/style1.css" type="text/css" />
<?php elsif://その他のサイトスタイルシート ?>
    <link rel="stylesheet" href="/style2.css" type="text/css" />
<?php endif; ?>

数字を直書きしてマジックナンバー化してるし保守下がる感じするので、以下のような考え方を入れてもいいかも。

参考:https://torounit.com/blog/2013/04/25/1514/

まとめ

・複数サイトを複数の子テーマ管理するにはstyle.cssのTheme Nameを別名にするだけ!

・複数サイトを1つの子テーマ管理するには、読み込むファイルを割り当てられたblog_idで条件分岐しよう!

・複数のサイトの構造が似てる場合は1つの子テーマで複数サイト管理したほうが楽かも!

以上です

ここまでお読み頂きありがとうございました。

参考:https://lovelog.eternal-tears.com/create-them/advanced/mu-childtheme/

参考:https://ja.wordpress.org/support/topic/%E3%83%86%E3%83%BC%E3%83%9E%E3%81%AE%E3%82%B3%E3%83%94%E3%83%BC%E2%87%92%E3%83%9E%E3%83%AB%E3%83%81%E3%82%B5%E3%82%A4%E3%83%88%E5%88%A5%E5%88%A9%E7%94%A8%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/