[WordPress]switch_to_blog()を使うとget_terms()が動かないので、直接DBからデータを取得する

Pocket

WordPressでマルチサイト可した時に、別のブログの記事を表示したい時は switch_to_blog(ブログID) のようにして、ブログを切り替えます。

以下のようにして記事に属するタクソノミーを表示させようとすると get_the_terms() の個所だけ動きません
※例:タクソノミーに「services」を設定した時

 

調べた所、Wordpressは、switch_to_blog()を使った時に get_the_terms() や get_terms() のような関数を使ってタクソノミーは取得できないようです。


$wpdbを使って直接データを取得する

関数でダメならば、直接DBからデータを持ってきます。

まず、functions.phpに↓を記述します。

最後に表示させたい個所に↓の引数で get_taxonomies_by_blog_post() を実行すると情報を取得できます。

第1引数 = タクソノミー名

第2引数 = ブログID

第3引数 = 記事ID


一番始めのループ内で各記事のタクソノミー名を表示する時は↓のような感じです。

 

これで無事、マルチサイトにしても記事に属するタクソノミー名を表示できました!

 

【追記】こちらでカスタムタクソノミーのslugが被っても大丈夫なように、更にコードを良い感じにしてくれてました。

[WordPress]マルチサイトで別ブログの記事が属するカスタムタクソノミーを取得 – Qiita
http://qiita.com/cs_sonar/items/bcc5d7fbbdef9c2db75e

この記事を書いた人:

ナカシマ

北区赤羽在住のWEBデザイナー兼エンジニア。インターネット、WordPress、本・漫画、音楽が大好き。妻と猫と暮らすアップル信者。

BLOG: 着ぐるみ追い剥ぎペンギン