【发布时间】: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 是因为我想要关键字,如果它出现在任何字段中。我知道我做错了结构。这就是我要问的问题,如果有人可以纠正我。