説明
switch_to_blog() は、マルチサイトで、処理の対象を別のサイトに切り替える関数です。切り替えたあとは、restore_current_blog() で元に戻します。
基本構文
switch_to_blog( int $new_blog_id, bool $deprecated = null ): true
引数
$new_blog_id:切り替え先のサイトのID
戻り値
常に true を返します。
使い方(サンプル)
switch_to_blog( 2 );
$posts = get_posts( array( 'numberposts' => 5 ) );
restore_current_blog();
注意点
- 切り替えたあとは、必ず
restore_current_blog()で元に戻す。 - 切り替えのたびに、設定やキャッシュの読み替えが行われるため、処理が重い。ループの中で、何度も呼ばない。
実務での使いどころ
- ネットワーク内の、別のサイトの投稿や設定を読み取るとき。
- メインサイトから、各サブサイトへ、設定を配るとき。
よくあるミスと対処
restore_current_blog()を呼ばず、以降の処理が、別のサイトのままになる。- ループの中で何度も切り替え、処理が遅くなる。
- 切り替え先のサイトのプラグインやテーマの関数が、使えると思っている。切り替わるのは、データベースのテーブルや設定などで、読み込まれているコードは変わらない。
NG例
switch_to_blog( 2 );
$title = get_bloginfo( 'name' ); // 元に戻していない
OK例
switch_to_blog( 2 );
$title = get_bloginfo( 'name' );
restore_current_blog();
使い分け早見表
| 関数 | 役割 |
|---|---|
switch_to_blog() |
別のサイトへ切り替える |
restore_current_blog() |
切り替え前のサイトへ戻す |
get_current_blog_id() |
現在のサイトのID |

コメント