我使用Wp_query类来查询我的帖子。在页面加载时获取模板中的15个帖子,它们的过滤工作正常。无限滚动使用JSON restful services获取其他帖子。服务器端的过滤器工作正常,但我不知道如何将逻辑从服务器传输到正确的查询。
Meta_query数组传递给服务器上的Wp_query:
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)
如何将其翻译成查询?类似的东西:
/可湿性粉剂JSON /帖过滤[meta_query] [键] =主页,_newsml_id&安培; [meta_query] [比较] = NOTEXISTS
或
?/可湿性粉剂JSON /帖过滤[meta_query] [键] =主页&安培;过滤[meta_query] [键] = _ newsml_id&安培; [meta_query] [比较] = NOTEXISTS
(对不起duplicating questions,我只想得到最准确的答案)
答案 0 :(得分:0)
很抱歉回答我自己的问题,但它也可以帮助其他开发者。
我创建了这个额外的过滤器'json_query_var-meta_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,以模仿服务器上已有的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