WordPressでカテゴリーとタグを指定してget_postsする方法

WordPressでget_postsする際、指定したカテゴリとタグの両方をもったpostを取得する方法を確認するまで、すんなり辿りつけなかったのでメモ。

結果的には、

カテゴリー → ’category’ => カテゴリ
タグ    → ’tax_query’ => 条件

を合わせて使えばよいです。

目次

ずばり正解

$args = array(
		'category' => 19,
		'tax_query' => array(
			array(
				'taxonomy' => 'post_tag',
				'field' => 'slug',
				'terms' => 'hoge'
			)
		)
	);
$posts = get_posts( $args );

以上!

当初、タグの場合もcategoryと同じように

‘post_tag’ => 1

みたいな使いかたができると思ったのですが、ググってみるとquery_postsでtax_queryを使っている記事ばかりでした。

で、英語のページを探したところ
Template Tags/get posts « WordPress Codex

カスタムタクソノミーのこちらを発見。

$args = array(
	'tax_query' => array(
		array(
			'taxonomy' => 'genre',
			'field' => 'slug',
			'terms' => 'jazz'
		)
	)
);
$postslist = get_posts( $args );

これ、taxonomyのところにpost_tag入れたらできるんじゃね?と試したところ、無事に最初に紹介したコードで、指定したカテゴリとタグをもつ投稿をget_postsすることができました。

まとめ

これが解決したので、会社のホームページの修正ができる。