WP JSON REST API(Ryan McCue)如何使用‘and’关系查询带有特定元数据的帖子?

时间:2014-11-24 作者:DamianS1987

我使用Wp\\u query类来查询我的帖子。页面加载时获取的模板中有15篇帖子,它们的过滤效果很好。使用无穷滚动获取其他帖子JSON restful services. 服务器端的过滤器工作正常,但我不知道如何将逻辑从服务器传输到正确的查询。

传递给服务器上Wp\\U查询的Meta\\u查询数组:

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/帖子?过滤器[元查询][键]=主页,\\u新闻ML\\u id&;[元查询][比较]=NOTEXISTS

/wp json/帖子?过滤器[元查询][键]=主页(&U);筛选器[元查询][键]=\\u newsml\\u id&;[元查询][比较]=NOTEXISTS

2 个回复
SO网友:DamianS1987

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

我创建了这个额外的过滤器“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\\U查询帖子过滤器:

?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

SO网友:Amino

WP REST API V2怎么样?我认为这在v2上不起作用!

add_filter(\'json_query_var-meta_query\', \'adjustQrry\', 10, 1);
应该是这样吗?

add_filter(\'rest_query_vars-meta_query\', \'adjustQrry\', 10, 1);

结束