お知らせ

BLOG

トップページ / [WordPress] マルチサイトでよく使う条件分岐や設定

[WordPress] マルチサイトでよく使う条件分岐や設定

複数のブログやサイトをたった一つのWordPressでまかなえて便利なマルチサイトですが、使ってみてわかる便利さや苦労があるので、とりあえずシェアメモ。 ども、カンマンのフロントエンド担当の阿部です。

マルチサイト時にメインサイトかサブサイトかを判別

マルチサイト時に複数のサイトを作った場合、「親(メイン)サイト」と「子(サブ)サイト」という分類に別れまして、例えば企業のメインサイトを「親サイト運用」、製品を「子サイト」運用として、テーマを共有で使った場合、表示しているサイトを判別して、内容を出し分けることが可能です。
<?php if (is_main_site()): ?>
メインサイト
<?php else : ?>
サブサイト
<?php endif ; ?>
この分岐を使えばメイン・サブでテーマ2つ運用をしなくてもある程度いけます。

子サイト内で親サイトの情報を取得

企業サイトの更新情報を製品サイトでも反映させる等の改造も余裕です。
<?php if (is_main_site()): ?>
<?php else : ?>
サブサイトの時
<?php switch_to_blog(1); //親サイトは'1' ?>
メインサイトから情報を取得
リセットを忘れずに
<?php restore_current_blog(); ?>
<?php endif ; ?>
switch_to_blog();で「1」以外を使えば任意のサイトから情報を取得させ事も可能です。

細々したマルチサイト用関数

親サイトのホームURL

<?php echo network_home_url(); ?>"> 常に親サイトのホームURLを返すので、メインサイト・サブサイト共通でタイトルロゴに当てる等で使える。

最後の砦、パーマリンクで条件分岐

<?php $url = $_SERVER['REQUEST_URI']; //パーマリンクで条件分岐 ?>
<?php if(strstr($url,'任意の文字列')): ?>
中身
<?php else: ?>
<?php endif; ?>
マルチサイト以外でも使えるんですけど、パーマリンクを識別して内容を出し分け。 page-slugでページテンプレートを切り替えることが出来ない場合、なかなか捗る。

テーマを共通化させるのか、サブサイト毎にテーマを用意するのかしっかり考えて作ろう

僕の場合はテーマはある程度共通化させてテーマの数を少なめで運用をもくろんだので、メイン・サブだけじゃなくて、メインのページ、サブのアーカイブと、カスタム投稿のシングル、もう頭痛くなるくらいの条件分岐の嵐でした。 マルチサイトの時に、親サイトの情報を引っ張ってくる処理は結構使うと思うので、親子判別・サイト切り替え当たりを憶えておくと捗ります。 ではー。