WordPressのグローバル変数について調べました。
親や子、子サイトごとに何かを出し分ける時には、$current_blogオブジェクトの中身を使うとよさそうです。
また、global $blog_id;しておくことで、以下の様な使い方もできます。
global $blog_id;
if ( $blog_id == 1 ) {
echo '親サイト';
} elseif ( $blog_id == 2 ) {
echo '1つ目の子サイト';
} else {
echo 'その他の子サイト';
}
もう一つの、$current_siteオブジェクトは何に使うんでしょうか??謎です。ネットワークをもう一つ増やすことができるのかな??
追記:2012/06/22
@jim0912さんから以下のようにコメントいただきました!ありがとうございます!
@shinichiN グローバル変数を理解することは大事ですが、それに頼った実装するのは最終手段にすべきでしょうね。親サイトかどうかを判別するなら、is_main_site を使っておけば、コアの実装方法が変わった場合でも、直す必要がなくなります。
— まがぞん (@jim0912) June 21, 2012
@shinichiN 3.4でもテーマに関する部分がclass化されていて、結構変わっているのですが、表層部分ではほとんど影響が感じられないことからも、極力WPno
— まがぞん (@jim0912) June 21, 2012
@shinichiN の関数を使って実装した方がよいはずです。
— まがぞん (@jim0912) June 21, 2012
is_main_site()について調べてみると、wp-icludes/functions.phpにありました。
function is_main_site( $blog_id = '' ) {
global $current_site, $current_blog;
if ( !is_multisite() )
return true;
if ( !$blog_id )
$blog_id = $current_blog->blog_id;
return $blog_id == $current_site->blog_id;
}
この関数の中で、2つのグローバル変数を使っていました。
$current_blogオブジェクト
// 親サイト
var_dump( $current_blog );
object(stdClass)#18 (12) {
["blog_id"]=>
string(1) "1"
["site_id"]=>
string(1) "1"
["domain"]=>
string(16) "example.com"
["path"]=>
string(1) "/"
["registered"]=>
string(19) "2012-06-20 15:17:42"
["last_updated"]=>
string(19) "2012-06-21 01:49:50"
["public"]=>
string(2) "-1"
["archived"]=>
string(1) "0"
["mature"]=>
string(1) "0"
["spam"]=>
string(1) "0"
["deleted"]=>
string(1) "0"
["lang_id"]=>
string(1) "0"
}
// 子サイト
var_dump( $current_blog );
object(stdClass)#18 (12) {
["blog_id"]=>
string(1) "2"
["site_id"]=>
string(1) "1"
["domain"]=>
string(24) "beijing.example.com"
["path"]=>
string(1) "/"
["registered"]=>
string(19) "2012-06-21 12:26:11"
["last_updated"]=>
string(19) "2012-06-21 03:26:12"
["public"]=>
string(1) "1"
["archived"]=>
string(1) "0"
["mature"]=>
string(1) "0"
["spam"]=>
string(1) "0"
["deleted"]=>
string(1) "0"
["lang_id"]=>
string(1) "0"
}
$current_siteオブジェクト
// 親サイト
var_dump( $current_site );
object(stdClass)#3 (6) {
["id"]=>
int(1)
["domain"]=>
string(16) "example.com"
["path"]=>
string(1) "/"
["blog_id"]=>
int(1)
["cookie_domain"]=>
string(16) "example.com"
["site_name"]=>
string(22) "Example Name"
}
// 子サイト
var_dump( $current_site );
object(stdClass)#3 (6) {
["id"]=>
int(1)
["domain"]=>
string(16) "example.com"
["path"]=>
string(1) "/"
["blog_id"]=>
int(1)
["cookie_domain"]=>
string(16) "example.com"
["site_name"]=>
string(22) "Example Name"
}