ACF:按关系字段搜索

时间:2017-08-02 10:06:28

标签: wordpress advanced-custom-fields

我使用过ACF关系字段。字段名称为international_mins_category_a_countries。该字段具有多个值。

如果我打印它((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',
            ),
        )

但没有结果。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

来自ACF关系字段的数据作为序列化数组存储在数据库中,该数组不是此类查询的理想格式。数组已压缩为数据库中的单个字符串,而不是存储为多个记录。

这意味着您必须使用LIKE子句来查找匹配的记录。

您需要将比较参数设置为LIKE,并在ID周围加上引号以防止不完全匹配(例如7374,5737等)。

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

ACF不会让你对这些数据的存储方式有太多控制权,但我会指出LIKE查询通常表现不佳。

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