Я хочу искать посты по категориям в WP-API.
Я знаю, что могу искать сообщения по категориям атрибутов или фильтровать [кошка].
Но сообщения содержат более одной категории.
Я пытался искать вот так:
{host}/wp-json/wp/v2/posts?categories=69&filter[cat]=[228,246,237]&per_page=50
или же
{host}/wp-json/wp/v2/posts?categories=69&filter[cat]=228&filter[cat]=246&filter[cat]=237&per_page=50
или же
{host}/wp-json/wp/v2/posts?categories=69&categories=246&categories=237&categories=228
Это не сработало для меня. Это заставило поиск искать последний атрибут.
Есть идеи?
Это структура ответа Json
{
"id": 9333,
"date": "2016-08-02T14:17:01",
"date_gmt": "2016-08-02T12:17:01",
"guid": {
"rendered": "{post}/?p=9333"},
"modified": "2016-08-03T08:50:35",
"modified_gmt": "2016-08-03T06:50:35",
"slug": "{post}",
"type": "post",
"link": "{host}/{post}/",
"title": {
"rendered": "{post}"},
"content": {
"rendered": "{post}"},
"excerpt": {
"rendered": "{post}"},
"author": 3,
"featured_media": 0,
"comment_status": "closed",
"ping_status": "closed",
"sticky": false,
"format": "standard",
"categories": [
228,
237,
207,
217,
246,
231,
69,
221,
270,
244
],
"tags": [],
"_links": []
}
Спасибо!
Если вы хотите получать сообщения из нескольких категорий, есть несколько решений, в зависимости от ваших потребностей.
В случае, если вы хотите получать сообщения из категории с ID = 1 ИЛИ категории с ID = 2, используйте следующий URL:
http://localhost/lifelog/wp-json/wp/v2/posts?filter[cat]=1,2
или же:
http://localhost/lifelog/wp-json/wp/v2/posts?categories=1,2
Для случая, когда вы хотите получать сообщения из категории с ID = 1 И категории с ID = 2, вы можете использовать:
http://localhost/lifelog/wp-json/wp/v2/posts?filter[category__and][]=1&filter[category__and][]=2
НО — некоторые значения фильтра, используемые в массиве фильтров, требуют аутентифицированного пользователя с edit_posts привилегии.
К счастью, есть более простое решение — WordPress поддерживает такие ссылки, как:
http://example.com/category/test1+test2/
Под вышеупомянутым URL вы получите список сообщений, которые относятся к категориям test1 И test2. И в REST API вы можете добиться того же поведения с помощью следующего URL:
http://localhost/lifelog/wp-json/wp/v2/posts?filter[category_name]=test1%2Btest2
Пожалуйста, помните, что вы должны заменить + войти в % 2B.
Других решений пока нет …