2017-08-02 110 views
1

我已經使用了ACF關係字段。字段名稱是international_mins_category_a_countries。該字段有多個值。ACF:按關係字段搜索

如果我打印((get_field("international_mins_category_a_countries", get_the_ID()))打印陣列 -

array 
(
    [0] => 737 
    [1] => 734 
    [2] => 723 
    [3] => 1484 
} 

現在我試圖尋找/過濾與價值的帖子說737

但我沒有得到任何結果。

Code I have used to filter that is --- 

'meta_query' => array(
      array(
       'key'  => 'international_mins_category_a_countries', 
       'value'  => '737', 
       'compare' => 'IN', 
      ), 
     ) 

但沒有結果。誰能幫忙?

+0

所以,你在你的relationsship僅返回ID - 但實際上你可以將其設置爲返回整個後對象 - 這樣,你已經把所有的數據。 – Stender

+0

是的,我有所有的數據,但我不想選擇所有的數據,插入我想選擇那些有這個ID – Alice

+0

你能解釋一點點嗎?例如什麼樣的關係領域?你也可以提供整個WP Query參數。 – justkidding96

回答

1

來自ACF關係字段的數據作爲序列化數組存儲在數據庫中,對於此類查詢不是理想的格式。該數組已經精簡爲數據庫中的單個字符串,而不是存儲爲多條記錄。

這意味着您必須使用LIKE子句來查找匹配的記錄。

您需要將ID參數設置爲LIKE以避免非精確匹配(例如7374,5737等)。

'meta_query' => array(
    array(
     'key'  => 'international_mins_category_a_countries', 
     'value' => '"737"', 
     'compare' => 'LIKE', 
    ), 
) 

ACF是不會給你在這個數據是如何存儲的,但我想指出,像查詢常常表現不佳太多的控制。

文檔:https://www.advancedcustomfields.com/resources/querying-relationship-fields/

+0

所以如果ID是7,那麼它也會匹配737 – Alice

+0

不,這是雙引號包裹ID的目的。他們將防止這種錯誤匹配。 –

+0

好的......嘗試.... – Alice