WordPress3.0の真髄はswitch_to_blog()にあり

本日WordPressのバージョン3.0が公開されました。日本語版は現時点ではまだみたいですが。

仕事で本店+複数支店のサイト開発案件がありそうなので、ベータ/RC版で予習してました。
3.0の目玉の一つである、複数設置を行ったのですが、期待していたあの機能(というかテンプレートタグ)がない!

メインサイトに子サイトの更新情報を表示するあれです。複数サイトを運営する人なら十中八九欲しがるであろうあの機能がないなんて。

RSSフィードを束ねて、時系列で並べ替えたら実現は可能なのですが、ネットワーク越しにアクセスして、処理して、表示ということになり、速度面での低下が懸念されます。

で色々調べてたらありました。switch_to_blog()です。引数にはブログIDを取ります(特権管理者 > サイト )。
WPMUの関数でした。

ブロり替えるというよりも、参照するDBのテーブルをブログのIDに基づいて切り替える、というイメージでしょうか。
切り替えてから、ループをまわしてやれば、切り替えたブログの投稿やらなんやらが取得できますので、取得したい子サイトの分だけ繰り返せば、ネットワークを経由しないカタチで、子サイトの情報が取り出せます。
最後にswitch_to_blog( 1 );でメインのサイトに帰ってこないと、その後で使ったテンプレートタグの出力内容が最後にSwitchした子サイトのものにすり替わってしまうのでご注意を。です。です。引数にはブログIDを取ります(特権管理者 > サイト )。

ブログを切り替えるというよりも、参照するDBのテーブルをブログのIDに基づいて切り替える、というイメージでしょうか。

切り替えてから、ループをまわしてやれば、切り替えたブログの投稿やらなんやらが取得できますので、取得したい子サイトの分だけ繰り返せば、ネットワークを経由しないカタチで、子サイトの情報が取り出せます。

処理のあとにswitch_to_blog( 1 );でメインのサイトに帰ってこないと、その後で使ったテンプレートタグの出力内容が最後にSwitchした子サイトのものにすり替わってしまうのでご注意を。

カスタム投稿やらカスタムタクソノミーやらもありますが、3.0になって一番ピンと来たのが、このswitch_to_blog()なのでした。



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です