ACF:按关系字段搜索

ACF: search by relationship field

我使用过 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
}

现在我正在尝试 search/filter 具有 737 值的帖子。

但是我没有得到任何结果。

Code I have used to filter that is ---

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

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

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/