按meta_Value数组中的值进行查询筛选

时间:2021-12-03 作者:Hr3f

我尝试添加一个过滤器,使elementor post小部件根据特定的自定义字段显示帖子。

自定义字段键为adress 并包含一个数组,其中包含一些键,如street\\u number、street\\u name、city、post\\u code等。

add_action( \'elementor/query/filterByPostCode\', function( $query ) {
    
    if (\'field\' === $_GET[\'getby\']) {
        
        $meta_query = $query->get(\'meta_query\');

        if (!$meta_query) {
            $meta_query = [];
        }
        
        $meta_query[] = [
            \'key\' => \'adress\',
            \'value\' => [ 
                \'key\' => \'post_code\',
                \'value\' => $_GET[\'field\'],
                \'compare\' => \'=\'
            ],
        ];

        $query->set(\'meta_query\', $meta_query);
    }

});
正确的查询是什么?

谢谢你的帮助

1 个回复
SO网友:Hr3f

我找到了答案here. 查询内容很简单:

        $meta_query[] = [
            \'key\' => \'adresse\',
            \'value\' => $_GET[\'field\'],
            \'compare\' => \'LIKE\'
            ];
因为它将搜索键的序列化(2D)数组adress 在DB的post\\U meta表中$_GET[\'field\'] 价值这意味着它还将搜索每个关键字名称及其值,但这对我来说已经足够了。