簡體   English   中英

WP JSON REST API(Ryan McCue)如何使用“ AND”關系查詢具有特定元數據的帖子?

[英]WP JSON REST API (Ryan McCue) how to query posts with specific meta data with 'AND' relation?

我使用Wp_query類查詢我的帖子。 在頁面加載時獲取的模板中有15個帖子,其過濾效果很好。 使用JSON Restful服務為其他帖子獲取Infinity滾動獲取。 服務器端的過濾器工作正常,但我不知道如何將邏輯從服務器傳輸到正確的查詢。

傳遞給服務器上Wp_query的Meta_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)

如何將其轉換為查詢? 就像是:

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

要么

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

(很抱歉重復問題 ,我只是想獲得可能最准確的答案)

很抱歉回答我自己的問題,但也可能對其他一些開發人員有所幫助。

我創建了這個額外的過濾器'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 restful來模仿服務器上已經存在的Wp_query posts過濾器:

?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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM