switch_to_blog() の使い方|説明・引数・注意点

説明

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

関連項目

restore_current_blog()、get_current_blog_id()、is_multisite()

公式リファレンス:switch_to_blog() | WordPress Developer Resources

コメント

タイトルとURLをコピーしました