今回は単発。
WordPressのREST APIから記事をカテゴリで絞り込む時、
複数のカテゴリを指定したい場合はどうすんの?
ってお話です。
カテゴリを複数指定する方法
公式の「Post一覧」に「categories」というパラメータがあるのでこれを利用します。
カテゴリをひとつ(当サイトのAMP)を指定↓。
/wp/v2/posts?categories=11
カテゴリをふたつ(AMPとPageSpeed Insights)を指定↓。
/wp/v2/posts?categories=11+12
このように引数に複数の値を指定する場合は「+」で連結します。
これはREST APIがどうのこうのというよりGETの書き方ですね。
公式にサンプルがなかったので最初分かりませんでした。
カテゴリをスラッグで指定できないのか?
できなさそうです。
試しに「amp」というスラッグを指定してみましたが、
categories[0] は integer タイプではありません。
REST API側にはスラッグで検索する機能はなさそうです。
そもそもカテゴリ指定で記事を検索するときって、関連記事取得とかそういう場面だと思うので、IDは既知のことが多いと思います。 どうしてもスラッグじゃないとダメなケースはけっこう希じゃないですかね。
それでもスラッグで指定したい
REST APIを使っているということは、対象のWordPressの外側だと思うので、スラッグからカテゴリIDを取得するには事前にAPIを叩かなくてはなりません(たぶん)。
まずはスラッグ指定でカテゴリを検索。
/wp/v2/categories?slug=amp
スラッグは一意(ユニーク)ではないので、要素1個の配列が返ります。
この配列の一つ目の要素に含まれるidを取得して再度ID指定するしかないでしょう。
カテゴリの他にも複数の値を指定できそうな引数があって、「tags」とか。
他にも「categories_exclude」「tags_exclude」「author」「author_exclude」とかもいけそう、試してませんが。
要は複数指定の時は「+」で連結ってのを覚えておけばよいです。