先日のマルチサイト運営の続編になります。無事マルチサイト化したサイトの、テーマを作成するにあたって、今回以下のような構成にしました。
- メインサイト−−−−テーマA
- サブサイト1−−−−テーマB(メインカラー:緑)
- サブサイト2−−−−テーマB(メインカラー:青)
サブサイトは、同一テーマでメインカラーが異なるだけ。つまり、CSSでサイトごとのカラーについてだけ変更したいケースです。この場合、考えられる一般的な方法としては、
- bodyにサイトごとのクラス名を付与する
- サイトごとに、サイト固有のCSSを読み込ませる
bodyにクラスを付与する
こちらは、他サイトからコードを頂戴しております。上記のケースでは、メインサイトでは使わないテーマなので、分岐は不要ですが、あったほうが便利なのでそのままです。
//bodyにマルチサイトのサイトクラス名を追加
function add_multisite_class( $classes ) {
global $current_blog, $current_site;
if ( is_multisite() ) {
if ( is_main_site() ) {
$classes[] = 'main-site';
} else {
if ( is_subdomain_install() ) {
$slug = substr( $current_blog->domain, 0, strpos( $current_blog->domain, '.' ) );
} else {
$slug = trim( $current_blog->path, '/' );
}
$classes[] = 'site-' . $slug;
}
}
return $classes;
}
add_filter( 'body_class', 'add_multisite_class' );
サイトごとに固有のCSSを読み込む
上記のソースを少しいじっただけです。これで、「site-○○.css」を読み込んでくれます。
//サイトごとのCSS読み込み
if(is_multisite()){
global $current_blog, $current_site;
$slug = trim( $current_blog->path, '/' );
wp_enqueue_style( 'siteCSS', $dir.'/assets/css/site-'.$slug.'.css' );
}