WordPressのREST APIで複数カテゴリを指定して検索する

シェアする:

今回は単発。

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」も同様の方法が使える

カテゴリの他にも複数の値を指定できそうな引数があって、「tags」とか。

他にも「categories_exclude」「tags_exclude」「author」「author_exclude」とかもいけそう、試してませんが。

要は複数指定の時は「+」で連結ってのを覚えておけばよいです。

シェアする: