WordPressのマルチサイトでブログパスでswitch_to_blogする。

最近マルチサイト案件が多かったりするのですが、各ブログを横断してリンクをつないだりみたいなことをたくさんやりました。
扱うサイトも多く、ブログを削除して作り直して・・・みたいなことが結構あったのですが、そのときに当然blog_idもかわってしまいます。(まぁそりゃそうだよね)

で、マルチサイトの肝になるところといえば、switch_to_blog でブログを切り替えてあーだこーだすることだとは思うのですが、これが、

[php]
switch_to_blog(1);
[/php]

みたいな感じで、変更先のブログのIDを指定せねばならないのです。これがちょっと使い勝手が悪いし、テーマを見たときにどこのブログに変わったのか、よくわかりません。

という訳でソースを眺めていたら、get_id_from_blogname( $slug )といういかにもな関数がありました。

example.com/hoge/ もしくは hoge.example.com

という子サイトがあった場合、
[php]
get_id_from_blogname( "hoge" );
[/php]
とすると、blog_idを教えてくれるので、

[php]
switch_to_blog( get_id_from_blogname( "hoge" ) );
[/php]

といった感じで、サイトパスで切り替えることができます。こっちの方が解り易いですね。テーマだけ別環境で開発といった場合でもちょっとは反映作業などもスムーズになるのではないでしょうか。

まぁ、案件も終盤になった頃に見つけたのですがね・・・・

マルチサイトは発展途上なイメージですが、ちゃんと使うと結構いろいろなことができそう!