Вопрос или проблема
Я совсем нов в разработке на WordPress. Работаю с веб-сайтом управления недвижимостью и разработкой мобильного API.
Здесь необходимо фильтровать данные на основе условий, таких как больше и меньше, а также в пределах диапазона.
Например, нужно отфильтровать и искать данные, где диапазон цен и количество спален больше или меньше. Пожалуйста, помогите мне решить эту проблему. Я попробовал следующий пример, но он не сработал для меня.
http://192.168.0.88:8825/wp-json/wp/v2/properties?filter[meta_key]=property_bathrooms&filter[meta_value]=4&filter[meta_compare]=>=&filter[meta_key]=property_bedrooms&filter[meta_value]=5&filter[meta_compare]=>=&filter[meta_key]=property_price&filter[meta_value]=5,500&filter[meta_compare]=between
Использование meta_key
и meta_value
хорошо подходит для фильтрации одного пользовательского поля. Но для сравнения двух полей вам нужно построить meta_query
с вашими двумя ключами/значениями и оператором compare
.
Смотрите этот ответ, который показывает различные шаги, которые вам нужно выполнить, чтобы добиться этого.
Ответ или решение
Для того чтобы фильтровать данные по условиям, таким как больше или равно (>=) и меньше или равно (<=), а также для установления диапазона значений через WP REST API, вам следует использовать meta_query
. Этот метод позволяет проводить более сложные запросы, чем простое использование meta_key
и meta_value
.
Пример запроса с использованием meta_query
Вот пример того, как можно сформировать запрос для получения свойств с использованием фильтров для цены и количества спален / ванных комнат через WP REST API:
http://192.168.0.88:8825/wp-json/wp/v2/properties?filter[meta_query][0][key]=property_bathrooms&filter[meta_query][0][value]=4&filter[meta_query][0][compare]=>=&filter[meta_query][1][key]=property_bedrooms&filter[meta_query][1][value]=5&filter[meta_query][1][compare]=>=&filter[meta_query][2][key]=property_price&filter[meta_query][2][value]=5000&filter[meta_query][2][compare]=>=&filter[meta_query][3][key]=property_price&filter[meta_query][3][value]=10000&filter[meta_query][3][compare]=<=
Объяснение структуры запроса
filter[meta_query]
: Этот ключ используется для указания дополнительной фильтрации.[0][key]
,[0][value]
,[0][compare]
: В этом примере это первая часть фильтрации (в данном случае, количество ванных комнат). Мы используем:key
: ключ метаданных (например,property_bathrooms
).value
: значение, к которому мы сравниваем (например,4
).compare
: оператор сравнения (в данном случае>=
).
- Можете добавлять несколько условий для метаданных, каждый раз используя следующий индекс (например,
[1]
,[2]
, и так далее) для их указания.
Таким образом, если вы хотите, чтобы цена была в определённом диапазоне (например, от 5000 до 10000), вы можете добавить дополнительное условие для property_price
.
Дальнейшие шаги
Для того чтобы данная схема заработала в вашем проекте, убедитесь, что:
-
Custom Fields: Убедитесь в том, что поля метаданных (
property_bathrooms
,property_bedrooms
,property_price
) действительно существуют и правильно настроены в ваших постах типаproperties
. -
Права доступа: Проверьте, есть ли у вашего REST API все необходимые права доступа для чтения метаданных.
-
Тестирование: Используйте инструменты, такие как Postman или Insomnia, для тестирования ваших API-запросов.
-
Документация: Ознакомьтесь с документацией WP REST API, чтобы узнать больше о механизмах фильтрации и запросах.
-
Улучшение SEO: Используйте ключевые слова, такие как "фильтрация данных" и "WP REST API", чтобы улучшить индексацию вашего сайта в поисковых системах.
Выполнив вышеперечисленные шаги, вы сможете успешно фильтровать данные на вашем сайте управления недвижимостью с помощью метаданных и WP REST API.