wordpress ACF 数组自定义查询 AND OR

问题描述 投票:0回答:1

问题:ACF 字段的 ID 数组(存储为字符串)不遵守 WPQuery(自定义查询)

post_meta.meta_key = 'EventTopicId'的数据

a:3:{i:0;s:2:"10";i:1;s:2:"32";i:2;s:2:"30";}

我还有其他几个 meta_key 字段,它们组合在一起为 WPQuery 创建过滤器。 (例如 EventTopicId + CategoryId + ...)

Id 作为数组传递。使用“IN”运算符时,查询返回 0 个结果。 这是我发现的最接近我认为我需要的东西。 PHP 中的数组转换为逗号分隔数组。

$metaSearchQuery[] =[
   'key'          => 'EventTopicId',
   'value'        => $eventTopicId,
   'compare'      => 'IN'
];

问题是我的 MetaQuery 是 AND 关系(filter1 + filter2 等)。 假设“IN”会在 ACF 字段上完成工作...但是如果我传递一个 10 的数组 $eventTopicId=['10'];然后返回零结果。

以上返回 0 个结果。 EndDates 和 SessionDetails 数据对于我正在测试的帖子来说是可以的。 看来正确的 SQL 是

( mt1.meta_key = 'EventTopicId' AND ( mt1.meta_value 如 '"10"' 或 mt1.meta_value 就像 '"11"' ... )

如何使用多个元键、一些字符串、一些数组来制作 WP 搜索查询。

注意:我尝试将其转换为字符串,但效果甚微

array_walk($eventTopicId, function(&$value, $key) {
   return $value = '"'.$value.'"';
   //return $value = (string) $value;
});

更新:这个原始 SQL 有效。

所以问题仍然存在:如何使用 WPQuery 和 MetaData 制作这样的 SQL。

wordpress advanced-custom-fields
1个回答
0
投票

结果确实是另一个嵌套数组,使用这个答案作为灵感: https://wordpress.stackexchange.com/questions/104060/using-or-conditions-in-meta-query-for-query-posts-argument

'meta_query' =>
        array(
           'relation' => 'AND', // default relation
            array(
                'key' => 'met_key_1',
                'value' => '1128',
                'compare' => 'LIKE',
            ),
            array(
                'relation' => 'OR',
                array(
                    'key' => 'meta_key_2',
                    'value' => 'Friday',
                    'compare' => 'LIKE',
                ),
                array(
                    'key' => 'meta_key_2',
                    'value' => 'Saturday',
                    'compare' => 'LIKE',
                ),
            )
        )

因此,生成的 SQL 确实是元字段之间的 AND 和单个元字段内的特定序列化数据集中的 OR。

我循环传递的 ID 并创建了一个 $orSearch 列表

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.