doukanhua0752 2014-11-25 09:33
浏览 71

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

I use Wp_query class to query my posts. 15 posts are in a template fetched on page load and their filtering works fine. Infinity scroll fetches for other posts using JSON restful services. The filter on the server side works fine but I don't know how to transfer the logic from the server to a proper query.

Meta_query array passed to Wp_query on the server:

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)

How to translate that into the query? something like:

/wp-json/posts?filter[meta_query][key]=homepage,_newsml_id&[meta_query][compare]=NOTEXISTS

or

/wp-json/posts?filter[meta_query][key]=homepage&filter[meta_query][key]=_newsml_id&[meta_query][compare]=NOTEXISTS

(sorry for duplicating questions, I just wanted to get the possibly most accurate answer)

  • 写回答

1条回答 默认 最新

  • douzhao4071 2014-11-25 12:31
    关注

    Sorry for answering my own question but it may help some other devs too.

    I created this additional filter 'json_query_var-meta_query'that returns the necessary arguments.

    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);
    

    Now, I can call JSON restful like that to mimic the Wp_query posts filter already on the server:

    ?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
    

    Ref: https://github.com/WP-API/WP-API/issues/337

    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么