wordpressのネットワーク上の別のブログのcustom taxonomyを取得する

マルチサイトで運用しているwordpressにおいて、同じネットワーク上のcustom taxonomyを取得する方法の備忘録。

はじめに switch_to_blog でブログを切り替えて get_taxonomies をで取得するつもりだった。
しかし、取得できない上にエラーも発生しないという状況になりました。

勘違いしていたのが switch_to_blog では自動でロードされるオプションやオブジェクトなどは切り替えることができない。そのため別のブログのカスタムタクソノミーへのアクセスができない状況でした。

素直にsqlを使って以下のように取得しました。

[php]
// get custom taxonomy from another blog on the same network
function get_taxonomies_from_blog($blog_id) {
switch_to_blog($blog_id);
global $wpdb;
$query = "
SELECT * FROM $wpdb->terms
JOIN $wpdb->term_taxonomy
USING(term_id)
";
$taxonomies = $wpdb->get_results($wpdb->prepare($query));
restore_current_blog();
return $taxonomies;
} [/php]

という感じです。
勘違いしてた。

Comments