当前位置: 首页 > 知识库问答 >
问题:

WP JSON REST API(Ryan McCue)如何查询具有“和”关系的特定元数据的帖子?

穆智刚
2023-03-14

我使用Wp_查询类来查询我的帖子。页面加载时获取的模板中有15篇文章,它们的过滤效果良好。Infinity scroll使用JSON restful服务获取其他帖子。服务器端的过滤器工作正常,但我不知道如何将逻辑从服务器传输到正确的查询。

传递给服务器上Wp_查询的元_查询数组:

meta_query

  0 =>  array (size=3)
    'key' => string 'homepage' (length=8)
    'value' => string 'false' (length=5)
    'compare' => string 'NOT EXISTS' (length=10)
  1 => array (size=2)
    'key' => string '_newsml_id' (length=10)
    'compare' => string 'NOT EXISTS' (length=10)
  'relation' => string 'AND' (length=3)

如何将其转换为查询?比如:

/wp json/posts?过滤器[meta\u query][key]=主页,\u newsml\u id

或者

/wp-json/posts?filter[meta_query][key]=主页

(很抱歉重复问题,我只是想得到可能最准确的答案)

共有1个答案

萧焱
2023-03-14

很抱歉回答我自己的问题,但这也可能对其他开发人员有所帮助。

我创建了这个额外的过滤器“json\u query\u var-meta\u query”,它返回必要的参数。

function adjustQrry($data){
    $args = array();
    $args['relation'] = 'AND';

    foreach ($data as $key=>$value) {
        if ( 'relation' === $key ) {
            $args['relation'] = $data['relation'];
        }
        if (  substr($key, 0, 3) === 'key' ) {
            $arg_num = substr($key, 3);
            $args[(int)$arg_num]['key'] = $value;
        }
        if (  substr($key, 0, 7) === 'compare' ) {
            $arg_num_comp = substr($key, 7);
            $args[(int)$arg_num_comp]['compare'] = $value;
        }
    }
    return $args;
}

add_filter('json_query_var-meta_query', 'adjustQrry', 10, 1);

现在,我可以像这样调用JSON restful来模拟服务器上已经存在的Wp_query帖子过滤器:

?filter[meta_query][key]=_newsml_categories_newsstream&filter[meta_query][key2]=homepage&filter[meta_query][relation]=AND&filter[meta_query][compare]=NOT%20EXISTS&filter[meta_query][compare2]=NOT%20EXISTS

参考:https://github.com/WP-API/WP-API/issues/337

 类似资料:
  • 我想检索那些作者(post表字段)是给定作者或具有给定元值(postemda表字段)的所有帖子。 如果“author”是一个元值,我知道我可以使用元查询来实现它。这里的问题是它不是。。。因此,我认为我不能在meta_查询中使用“author”字段,而使用“relation”键。 我要找的东西是: 关于如何使用WP_Query实现这一目标的任何建议? 谢谢!

  • 2-查询id为1的人的所有地址,2我想: 好的方法是什么?

  • 我不明白是什么问题? 谢谢。

  • 我是新来laravel的,所以原谅我可能的愚蠢问题。此外,我确实研究了所有其他“类似”的问题,但要么它们没有重现正确的解决方案,要么我真的很难理解。 情景: 我有一个帖子模型和一个主题模型。这就是他们现在的样子。 在岗位上。php 在主题上。php 现在,我需要实现的是: 如果将查询参数传递给请求(即q=Food),我只想返回在主题关系中包含主题食物的帖子,而不返回其他帖子。如果什么都没有通过,那

  • 我有两个模型。模型有一个(关系)。 关于模型,我有以下关系:

  • 我正在建立一个本体论。 我有一个叫的类 我有一个名为的对象属性 我添加了一个相当于的