tax_queryを使ってget_postsしたら全く結果が取得できなくてはまった件

カスタムポストタイプとカスタムタクソノミーを組み合わせてデータを登録しているのですが、テストしていけそうだったので、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',
)

ということで、これですすめてみます。