Поиск сообщений по категориям Wordpress WP-API

Я хочу искать сообщения по категориям в WP-API.

Я знаю, что могу искать сообщения по категориям атрибутов или фильтровать[cat].

Но сообщения содержат более одной категории.

Пробовал искать так:

{host}/wp-json/wp/v2/posts?categories=69&filter[cat]=[228,246,237]&per_page=50

or

{host}/wp-json/wp/v2/posts?categories=69&filter[cat]=228&filter[cat]=246&filter[cat]=237&per_page=50

or

{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": []
  }

Спасибо!


person ZizouJd    schedule 14.08.2016    source источник
comment
Перейдите на английский язык и заверните код в теги.   -  person dbmitch    schedule 15.08.2016


Ответы (1)


Если вы хотите получать сообщения из нескольких категорий, есть несколько решений, в зависимости от ваших потребностей.

В случае, если вы хотите получить сообщения из категории с ID = 1 ИЛИ категории с ID = 2, используйте следующий URL:

http://localhost/lifelog/wp-json/wp/v2/posts?filter[cat]=1,2

or:

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.

person Tomasz Dziuda    schedule 14.08.2016
comment
Мне нужно получить сообщение с ID=1 и ID=2 и т. д., но ?filter[category__and][]=1&filter[category__and][]=2 у меня не работает - person ZizouJd; 14.08.2016
comment
Как я уже писал, НО - для некоторых значений фильтра, используемых в массиве фильтров, требуется аутентифицированный пользователь с правами edit_posts. - поэтому я предложил решение со знаком плюс. - person Tomasz Dziuda; 14.08.2016
comment
Хорошо, отлично, решение со знаком плюс работает для меня. Теперь, как мне поступить со строкой, в которой есть пробелы? Пример = filter[category_name]=test 1%2Btest 2 - person ZizouJd; 15.08.2016
comment
test1 и test2 - это ярлыки категорий, поэтому вы не можете использовать пробел в нем - скорее всего, для категории под названием test 1 вы должны использовать test-1 - person Tomasz Dziuda; 15.08.2016
comment
Как получить категории из этого типа API ?rest_route=/wp/v2/posts . - person Manoj Budha Ayer; 07.09.2018
comment
Параметр запроса фильтра устарел: github.com/WP-API/WP- API/вопросы/2799 - person Bryan McGrane; 20.01.2019