В настоящее время я работаю над приложением Angular, которое взаимодействует с Wordpress ' REST api . Основным компонентом этого приложения является фильтруемый индекс сообщений, где пользователи могут выбирать несколько тегов для поиска.
Мое намерение состоит в том, чтобы возвращаемые сообщения включали все выбранные теги, то есть, если выбраны теги 1 и 2, будут возвращаться только сообщения, имеющие ОБА теги 1 и 2.
Очевидно, это поддерживалось в предыдущих версиях с использованием параметра запроса фильтра, но с тех пор устарело .
Я пытался следовать документам, но они не ясно, возможно ли это, и то, как Wordpress обрабатывает фильтрацию по нескольким таксономиям, очень запутанно. Вот тест, который я провел:
https://<mysite>/wp-json/wp/v2/posts
<- Заголовок X-WP-Total показывает 359 результатов. </p>
/wp-json/wp/v2/posts?tags=52
<- 253 результата, поэтому фильтрация происходит, как и ожидалось. </p>
/wp-json/wp/v2/posts?tags=1
<- 0 результатов, как и ожидалось, поскольку ни один пост не помечен как ID 1. </p>
/wp-json/wp/v2/posts?tags=1,52
<- 253 результатов, что означает, что мы перешли к условию «ИЛИ». В этом случае я хотел бы видеть 0 результатов, поскольку ни один пост не помечен как ID 1. </p>
/wp-json/wp/v2/posts?tags[0]=52&tags[1]=1
<- 253 результатов, поэтому фильтрация по-прежнему не применяется правильно </p>
/wp-json/wp/v2/posts?tags[]=52&tags[]=1
<- 253 результата, поэтому фильтрация по-прежнему не применяется правильно </p>
/wp-json/wp/v2/posts?tags=52&tags=1
<- 0 результатов, поэтому сначала я подумал, что это работает, но после изменения порядка моих тегов, например, <code>tags=1&tags=52, я видел 253 результатов, поэтому кажется, что WP только захватывает последние значения тегов.
/wp-json/wp/v2/posts?tags=52+1
<- Неверный запрос </p>
/wp-json/wp/v2/posts?tags=52%2B1
<- Неверный запрос </p>
Есть ли способ фильтрации сообщений по нескольким тегам с помощью REST API, или мне нужно будет создать собственную конечную точку?
Кроме того, я искал похожие вопросы.
Этот вопрос о стеке идентичен тому, что я ищу, но принятый ответ не работает, так как они используют параметр запроса 'filter', который устарел.