【问题标题】:Wordpress Meta Query - multiple keysWordpress 元查询 - 多个键
【发布时间】:2018-07-30 05:56:17
【问题描述】:

我正在为搜索目的编写元查询。我总共有 16 个键(字段),我需要从中搜索关键字。到目前为止,我正在从 4 个键(键)中检索结果。但是,当我为所有字段扩展代码时,我得到了错误。请指出错误以及正确的方法。 运行良好的代码:

$WorkinFilter_k_s = array(
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'relation' => 'OR',
            array(
                'key' => 'Building_Name',
                'value'   => '',
                'compare' => 'LIKE'
            ),
            array(
                'key' => 'Street',
                'value'   => $keywords1,
                'compare' => 'LIKE'
            ),
        ),
        array(
            'relation' => 'OR',
            array(
                'key' => 'Town',
                'value'   => $keywords1,
                'compare' => 'LIKE'
            ),
            array(
                'key' => 'Description',
                'value'   => $keywords1,
                'compare' => 'LIKE'
            ),
        ),
    )
); 

我扩展所有 16 个字段时的代码。它不工作

$WorkinFilter_k_s = array(
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'relation' => 'OR',
            array(
                'relation' => 'OR',
                array(
                    'relation' => 'OR',
                array(
                    'relation' => 'OR',
                array(
                    'key'     => 'Street',
                    'value'   => $keywords1,
                    'compare' => 'LIKE'),
                array(
                    'key'     => 'COMMENTS1',
                    'value'   => $keywords1,
                    'compare' => 'LIKE')
                ),
                array(
                    'relation' => 'OR',
                array(
                    'key'     => 'COMMENTS3',
                    'value'   => $keywords1,
                    'compare' => 'LIKE'
                ),
                array(
                    'key'     => 'Town',
                    'value'   => $keywords1,
                    'compare' => 'LIKE'
                )
                )
                ),
                array(
                    'relation' => 'OR',
                array(
                    'key'     => 'Building_Name',
                    'value'   => $keywords1,
                    'compare' => 'LIKE'
                )
                array(
                    'key'     => 'Description',
                    'value'   => $keywords1,
                    'compare' => 'LIKE'
                )
                ),
                array('relation' => 'OR',
                array(
                    'key'     => 'District',
                    'value'   => $keywords1,
                    'compare' => 'LIKE'),
                array(
                    'key'     => 'BulletPoint5',
                    'value'   => $keywords1,
                    'compare' => 'LIKE')
                    )
                )
            ),  
            array(
            'relation' => 'OR',
            array(
                'relation' => 'OR',
                array(
                    'relation' => 'OR',
                array(
                    'relation' => 'OR',
                array(
                    'key'     => 'BulletPoint2',
                    'value'   => $keywords1,
                    'compare' => 'LIKE'),
                array(
                    'key'     => 'BulletPoint3',
                    'value'   => $keywords1,
                    'compare' => 'LIKE')
                ),
                array(
                    'relation' => 'OR',
                array(
                    'key'     => 'BulletPoint1',
                    'value'   => $keywords1,
                    'compare' => 'LIKE'
                ),
                array(
                    'key'     => 'BulletPoint6',
                    'value'   => $keywords1,
                    'compare' => 'LIKE'
                )
                )
                ),
                array(
                    'relation' => 'OR',
                array(
                    'key'     => 'BulletPoint7',
                    'value'   => $keywords1,
                    'compare' => 'LIKE'
                )
                array(
                    'key'     => 'BulletPoint8',
                    'value'   => $keywords1,
                    'compare' => 'LIKE'
                )
                ),
                array('relation' => 'OR',
                array(
                    'key'     => 'BulletPoint9',
                    'value'   => $keywords1,
                    'compare' => 'LIKE'),
                array(
                    'key'     => '',
                    'value'   => $BulletPoint10,
                    'compare' => 'LIKE')
                    )
                )
            ) 

        )
    );

【问题讨论】:

  • 我从未检查过它,但 Wordpress 可能只会读取 2 个级别的深度。你有一堆深度,这些都是多余的,因为你所有的关系都是OR。因此,您实际上应该只写 1 级深度的所有内容。总的来说,这一切看起来有点混乱。此外,这个查询可能会变得非常慢,因为 Wordpress 不知道如何优化它。原始查询可以做得更好,但您可能需要先了解有关 SQL 的更多信息。
  • 我使用 OR 是因为我想要关键字,如果它出现在任何字段中。我知道我做错了结构。这就是我要问的问题,如果有人可以纠正我。

标签: wordpress meta


【解决方案1】:

它可能仍然效率低下,但您大多只需要清理代码。

$WorkinFilter_k_s = array(
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key'     => 'Street',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
        array(
            'key'     => 'COMMENTS1',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
        array(
            'key'     => 'COMMENTS3',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
        array(
            'key'     => 'Town',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
        array(
            'key'     => 'Building_Name',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
        array(
            'key'     => 'Description',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
        array(
            'key'     => 'District',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
        array(
            'key'     => 'BulletPoint5',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
        array(
            'key'     => 'BulletPoint2',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
        array(
            'key'     => 'BulletPoint3',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
        array(
            'key'     => 'BulletPoint1',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
        array(
            'key'     => 'BulletPoint6',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
        array(
            'key'     => 'BulletPoint7',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
        array(
            'key'     => 'BulletPoint8',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
        array(
            'key'     => 'BulletPoint9',
            'value'   => $keywords1,
            'compare' => 'LIKE',
        ),
    ),
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 2015-03-13
    相关资源
    最近更新 更多