wp rest api过滤器嵌套数组jmespath

时间:2019-01-19 16:17:01

标签: wordpress api filter nested jmespath

我正在尝试使用内置过滤器字符串的Jmespath o标准来过滤wpapi请求。

我想使用“过滤器”数组中的一个或多个值来检索列表中的所有“ id”。 “过滤器”嵌套在“ _item_filter-options”下。

例如,我会使用“ filters” == 409 OR 400过滤所有ID。

那如何过滤所有带有“ locations” == 217 OR其他值的“ id”呢?

您能帮我找到解决方法吗?

[
  {
    "id": 2608,
    "date": "2018-08-18T12:53:16",
    "date_gmt": "2018-08-18T10:53:16",
    "ait-locations": [
      217,
      19
    ],
    "ait_item_filters-options": {
      "filters": [
        "419",
        "400",
        "409",
        "418",
        "531",
        "403",
        "408",
        "575"
      ]
    },

  },
  {
    "id": 2588,
.....

我添加了一些其他信息,可能有助于回答我。 我正在使用带有自定义帖子类型“ ait-item”和元字段的ait-club wordpress主题。

我正在尝试使用Wordpress Rest API来获取具有某些属性(例如纬度,标题,地址等)的所有ait-item,并通过_item_filters-options“->” filters“进行过滤。

例如使用http://mydomain/wp-json/wp/v2/ait-item?location=19 IT工作(位置是自定义分类法)。如何使用Jmespath检索相同的结果?

如何使用filter = 419或更多值获得ait-item?

对不起,我会说一点英语,谢谢。

编辑: 使用:

https://www.mydomain.it/wp-json/wp/v2/ait-item?_query=[?_item_filters-options.filters[0]=='400']

i可以检索所有“ id”,其中“ filters”数组的firt值为400。 我无法搜索整个“过滤器”数组!你能帮我吗?

编辑:我找到了使用以下方法的解决方案:

https://www.areepicnic.it/wp-json/wp/v2/ait-item?_query=[?"_ait-item_filters-options".filters[?@=='400']]

https://www.areepicnic.it/wp-json/wp/v2/ait-item?_query=[?"_ait-item_filters-options".filters[?contains(@,'397')]]

现在我正在尝试使用多个值进行过滤。

1 个答案:

答案 0 :(得分:0)

可以像这样对过滤器进行过滤,并根据需要使用尽可能多的或运算符||来获取所需的所有选项:

[?contains(_item_filters-options.filters, '409') || contains(_item_filters-options.filters, '400')].id

以及类似的位置信息:

[?contains(locations, '217') || ?contains(locations, '<other-value>'].id