WP REST API: фильтр по категории 1 И категории 2


12

Я вмешивался в REST API, и я застрял с этим: Как я могу фильтровать сообщения в cat1 и cat2?

На данный момент ?categories[]=45&categories[]=50возвращается в категории ID 45 или 50 - как я могу получить сообщения в 45 и 50?

Заранее спасибо.


Вы нашли решение для этого?
Кори

@ Кори: Нет. Полагаю, что это невозможно, на данный момент (некоторые посты поддержки плагинов утверждали, что это так), я использовал API для приложения с Ionic, я загрузил их отдельно и вместо этого пересек. Оставьте это открытым, на случай, если мое обучение будет неполным. Читал где-нибудь, где плагин редактируется (совсем не рекомендуется), чтобы добиться этого.
Джесси Р Фрэнсис

Ответы:


6

Несколько категорий могут быть разделены запятой, как показано ниже

http://example.com/wp-json/wp/v2/posts?categories=20,30

надеюсь это поможет


Запрос для поиска И, это даст вам ИЛИ.
Том Вудворд,

6

@ Посмотрите: WP-API / WP-API # 2990

Начиная с WP 4.7, filterбыл удален из WP-API.

Вам нужно использовать этот плагин: https://github.com/WP-API/rest-filter


1
Альтернативный плагин github.com/bueltge/wp-rest-api-filter-items, который имеет тест на надежное обслуживание, включает.
Bueltge

@bueltge, Интересно. В настоящее время я использую плагин rest-api-filter-fields : github.com/svrooij/rest-api-filter-fields , который, похоже, делает то же самое.
Остин Пасси


1

Установите упомянутый плагин фильтра Остин ( https://github.com/WP-API/rest-filter ) и попробуйте ?filter[categories]=cat_one_slug%2Bcat_two_slug.

Я узнал, что %2Bэто кодовый эквивалент +символа.

Обычно мы используем +оператор AND, но, к сожалению, он преобразуется в пробел, поэтому используйте %2Bвместо него.


1

Кажется, нет способа сделать это в текущей версии API. Без использования плагина это может быть достигнуто с помощью пользовательской конечной точки или с помощью функции фильтра оставшихся запросов для определенного типа записей.

Вот грубая функция фильтра, которая добавляет параметр с именем cat_relation:

add_filter( 'rest_post_query', function( $args, $request ) {
    if($request['cat_relation'] == 'AND') {
        $args['category__and'] = $request['categories'];
    }
    return $args;
}, 10, 2);

Таким образом, пример запроса URL будет:
http://example.com/wp-json/wp/v2/posts?categories=17,8&cat_relation=AND



-1

Для тех, кто использует Rest API v3, он работает для меня:

http://example.com/wp-json/wc/v3/products/?category=42,43

Это API REST WooCommerce для продуктов и категорий продуктов. Вопрос был о постах и ​​категориях постов с помощью WordPress REST API.
Джейкоб Питти
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.