具有元序列化数据数组值的WordPress元查询

时间:2019-03-25 作者:JI-Web

正在基于数组序列化值在meta\\u查询中查找嵌套和/或关系的方法。

已审阅这些内容:Query multiple meta key values?WP Meta Query for some meta (array) values

我知道序列化数据“不应该”用于搜索/过滤(或者首先需要在SQL之外拉出),但我想把它放在那里,看看嵌套是否可以做到这一点。

E、 g.数据[元数据字段1=\'abc\',元数据字段2 a:2:{i:0;s:1:“1”;i:1;s:1:“4”}]

这将值[“1”、“4”]保存为字符串数组。

我要执行的搜索类似于

$metaSearchQuery = [
            \'relation\'    => \'AND\',
            [
               \'key\' => \'<FIELDNAME1>\',
                \'value\' => \'abc\'
            ],
            [
            \'relation\'    => \'OR\',
               [
                  \'key\'          => \'<FIELDNAME2>\',
                  \'value\'        => serialize(strval(1)),
                  \'compare\'      => \'like\',
               ],
               [
                  \'key\'          => \'<FIELDNAME2>\',
                  \'value\'        => serialize(strval(4)),
                  \'compare\'      => \'like\',
               ],
               ...............
            ]
        ];
输出SQL类似

... where meta_value.field1 = \'abc\' and (field2 like \'s:1:"1"\' or field2 like \'s:1:"4"\')
这样,您就可以对其他字段使用main和条件,对数组值使用nest或。。。?使用meta\\u查询是否可能做到这一点?

原因是我必须过滤,值可以是1、2、3、4或它们的任意组合。分类学更好,是的,但这已经写好了,所以如果可能的话,我想使用元结构。

1 个回复
SO网友:JI-Web

可能应该等一会儿,但在发布问题后,我根据以上观点找到了解决方案,并在此处重复:

https://codex.wordpress.org/Class_Reference/WP_Meta_Query

https://generatewp.com/filtering-data-with-wp_meta_query/

我的解决方案:

$metaSearchSubQuery = [
            \'relation\' => \'OR\'    
        ];

foreach($eventTypeId as $id) {
    $metaSearchSubQuery[] = [
        \'key\'          => \'EventId\',
        \'value\'        => serialize($id),
        \'compare\'      => \'like\'
    ];
}

$metaSearchQuery[] = $metaSearchSubQuery;