カスタムポストタイプとカスタムタクソノミーを組み合わせてデータを登録しているのですが、テストしていけそうだったので、WordPressの実装する予定のページに、この部分を関数にしたら全くうまくいかなくなりました。
$arr = array( 'post_type' => 'custom_post', 'tax_query' => array( array( 'taxonomy' => 'custom_taxonomy', 'terms' => 'このタクソノミー', 'field' => 'name', 'operator' => 'IN', ), ), ); $results = get_posts($arr);
なぜだ!?
とおもって、しばらくテストをしてみると、
array( 'taxonomy' => 'custom_taxonomy', 'terms' => 165, 'field' => 'term_id', 'operator' => 'IN', )
上記の様にfieldをterm_idにしたところ、あっさりとうまくいきました。
しかし、このfieldをnameにすると、やっぱりダメ。
もしかして、これ、日本語がNGなのか?とおもってぐぐってみると、
出遅れWPノート: query_postsでtax_query渡すときのfieldはnameではなくslugで
WordPress › フォーラム » query_postsタクソノミー引数でfieldをnameで指定した場合の動作不良
まさしく、そのとおりで日本語だとだめみたいです。
まがりんのこの記事は、filedがnameになっていますが日本語じゃなかったからこれでOKだったんですね。
WordPressの新機能 複数タクソノミークエリーまとめ | Simple Colors
かといって、term_idだと可読性が悪いのでどうしたものかとおもったのですが、slugにすると日本語でも大丈夫なようです。
array( 'taxonomy' => 'custom_taxonomy', 'terms' => 'このタクソノミー', 'field' => 'slug', 'operator' => 'IN', )
ということで、これですすめてみます。