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" }
コメント