NeGiMeMo.net

ねぎさんのメモ帳。日常・メモ・ときどきWordPress。

マルチサイト化したWordPressの各サイトのIDをパスから取得する

bell賞味期限切れコンテンツ

この記事は公開または最終更新から555日くらい経過しています。
このメッセージが表示されている記事(特にプログラミング系)は情報が古くなっている可能性があるので注意して下さい。

マルチサイト化した WordPress は、各サイトにサイトIDが割り振られています。
このIDと switch_to_blog() 関数を使うことで、ほかの兄弟サイトのデータにアクセスできるようになり、例えば、ホームページとブログを兄弟サイトにしてたときにホームページ側にブログの記事を表示したりとかといったことができるようになります。

で、今回の案件であったんですが、もう各サイトのパスは決まっているんだけど、作る順番が曖昧でIDで指定してしまうとうまくスイッチできない可能性があるといった状況で狙ったブログにスイッチさせなくてはイケないという状況になりまして、なんとかならないか考えてみました。

定義済みのサイトを取得するには wp_get_sites()

WordPress 3.7 以降では、wp_get_sites() という関数を使うことで、定義されているサイトのデータをまるっと取り出すことができます。

あとはこれをループに放り込んでごにょごにょすれば…

無事IDが求まりました。

あとは適当に関数とかにしておけばいいんじゃないんすかね?

これでいつでもパスからIDを探せますね。
頻繁にスイッチするならさらに switch_to_blog() のラッパー関数でもつくってパスからスイッチできるようにしてもいいかもしれません。まぁ switch_to_blog(get_site_id_by_path(‘blog’)); とかで十分かもしれませんが

TAGS