使用 ACF 字段搜索所有单词

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

我正在使用多个 ACF 字段构建自定义搜索。 我需要搜索搜索输入和所有 ACF 字段中的所有单词,因此我编写了这样的查询:

 $keywords = explode(' ', $_POST['search_value']);

    $searchable_fields = array('acf_name', 'acf_surname', 'street');


    $meta_query = array();
    foreach ($keywords as $keyword) {
        foreach ($searchable_fields as $searchable_field) {

            $meta_query[] = array(
                'key' => $searchable_field,
                'value' => $keyword,
                'compare' => 'LIKE',
            );
        }
    }


    $meta_query = array(
        'relation' => 'OR',
        $meta_query
    );

    $args = array(
        'post_type' => "custom_post_type",
        'posts_per_page' => -1,
        'meta_query' => $meta_query
    );

但是这段代码不起作用。 例如,如果搜索:“Wilhelm SCHROFF”和 print_r for $args,我有:

[meta_query] => Array
    (
        [relation] => OR
        [0] => Array
            (
                [0] => Array
                    (
                        [key] => stolpersteine_name
                        [value] => Wilhelm
                        [compare] => LIKE
                    )

                [1] => Array
                    (
                        [key] => stolpersteine_surname
                        [value] => Wilhelm
                        [compare] => LIKE
                    )

                [2] => Array
                    (
                        [key] => street
                        [value] => Wilhelm
                        [compare] => LIKE
                    )

                [3] => Array
                    (
                        [key] => stolpersteine_name
                        [value] => SCHROFF
                        [compare] => LIKE
                    )

                [4] => Array
                    (
                        [key] => stolpersteine_surname
                        [value] => SCHROFF
                        [compare] => LIKE
                    )

              ecc, ecc

            )

    )

我认为问题出在 $meta_query 数组中。 我该如何解决这个问题? 谢谢

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

'relation' => 'OR'
添加到
$meta_query
时出现问题。你这样做的方式
$meta_query
落在了一个额外的数组中。试试这个:

$keywords = explode(' ', $_POST['search_value']);
$searchable_fields = array('acf_name', 'acf_surname', 'street');
$meta_query = array('relation' => 'OR');

foreach ($keywords as $keyword) {
    foreach ($searchable_fields as $searchable_field) {
        $meta_query[] = array(
            'key' => $searchable_field,
            'value' => $keyword,
            'compare' => 'LIKE',
        );
    }
}

$args = array(
    'post_type' => "custom_post_type",
    'posts_per_page' => -1,
    'meta_query' => $meta_query
);
© www.soinside.com 2019 - 2024. All rights reserved.