LoginSignup
2
2

More than 5 years have passed since last update.

WordPressのマルチサイトスイッチにはちゃんとswitch_to_blogを使おう

Posted at

WordPressをマルチサイトで扱っていて、他のネットワークのサイトの投稿を使いたい時ってあると思います。例えば親サイトに子サイトの投稿を全部表示させたいときとか。

そんなとき

# blog_idが2のサイトの投稿を取得する例

$blog_id = 2
switch_to_blog($blog_id);
# ここで投稿を取得したりする処理を書く
get_post($post_id);
restore_current_blog();

とすると思います。これが正しいんですが、興味で

$GLOBALS['blog_id'] = $new_blog_id;

じゃだめなのかなって思ってやってみたらnullを返してきました。
なんでだろうと思って switch_to_blog のメソッド追ってみたら wpdbクラスの set_blog_idを呼んでた。あー。。。マルチサイトそれぞれ違うprefixを変更してるのか。

wpdbの持つメンバ変数$tableのprefixも変更してるみたいだから、wpdbを使う限りアクセスできなくなっちゃうってことか。ってことでちゃんと switch_to_blogを使いましょう。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2