どうでもいい雑記その467
- Category: WordPress関係
WordPressでカテゴリ A && ( タグ B || タグ C) の条件を満たす記事を取り出す
- $query = array( ‘category__and’=>array( カテゴリ A の ID) , ‘tag_slug__in’=>array(‘ タグ B のスラッグ ‘ , ‘ タグ C のスラッグ ‘) ); とかやった $query をquery_posts に入れれば OK
- tag_slugin は tagin でも可。その場合はスラッグじゃなくて ID 入れることになるけども。
- 当たり前だけど、ページナビゲーションがきちんと動作させるには get_query_var(‘paged’) あたりで取得したページの値も一緒に query_posts に入れてやらないとダメ。
とまぁ、いつものように、私用のメモ。適当なことを書いている可能性があるので参考にする人 *1は気をつけること。何かあっても私は一切責任取りません。
あんま検証してないからよく分からんけど、「query_posts()」で複数条件組み合わせて投稿を取り出すときの引数は、「cat」「category_name」「tag」ではなく「categoryand」「categoryin」「tagand」「tagin」「tag_slug__and」「tag_slug__in」を使わないとダメっぽい。
上の例でいくと「$query = array( ‘cat’=>カテゴリ A の ID , ‘tag_slug__in’=>array(‘ タグ B のスラッグ ‘ , ‘ タグ C のスラッグ ‘) );」では希望の条件(A && (B || C))を満たす記事を取り出せないっぽい。
ついでにいうと上に挙げた「category__and」なんかの各引数に渡す値は配列じゃないとダメなので要注意。あとカテゴリー指定の方は「category_slug__and」 とかがないからカテゴリースラッグの配列は利用できないので、そこにも注意。っていうか何でないのよ。どうしてもスラッグを使って条件指定したい場合は、カテゴリースラッグをIDに変換してから配列に入れるしかないね。
この記事もあとでまとめてメモに書き加えておこうと思ったけど、見辛いな、自分で書いたメモ。複数ページに分けるのも微妙だし、目次くらいつけておいたほうが良さそうだ。何をメモったのか忘れそう。
- いないと思うけどね[↩]