值meta_query邮政编码数组

时间:2018-11-01 00:54:37

标签: php wordpress

所以我做了很多搜索,但我真的没有运气。

基本上,我有一个“邮政编码” 自定义字段,我需要根据URL查询中的 _GET ['邮政编码”] 进行搜索。页面加载后,它将根据此数据设置参数以创建特定的WP_Query。

我使用以下代码搜索邮政编码,该代码在一定程度上可以正常工作:

$args = array(
    'post_type' => 'property',
    'posts_per_page' => '10',
    'meta_key'  => 'price_variable',
    'orderby'   => 'meta_value_num',
    'order'     => $_GET['sort'],
    'paged' => $paged,
    'meta_query' => array(
            array( 'key' => 'postcode', 'compare' => 'REGEXP', 'value' => $_GET['postcode'] )
    )
);

但是,只要我必须排除两位数的邮政编码,问题就到了。假设用户搜索了HU1,但HU11,HU12和HU13也存在,如果它们都包含在这些详细信息中,它也会将它们全部引入。

如果只是邮政编码仅是开头3/4个字符的情况,这将更容易处理,但是由于它是完整的邮政编码,因此您拥有诸如HU13 7DS和HU7的邮政编码。 1PQ,因此我无法从中选择确切的搜索内容。

我尝试了关联方法,但是加载时间太可笑了(由于必须对HU10-HU19中的每个条目都进行加载),可悲的是,我似乎无法执行 NOT REGEXP 使其更快的阵列...例如

array(
    'relation' => 'AND',
    array( 'key' => 'property_type', 'compare' => 'REGEXP', 'value' => $_GET['postcode'] ),
    array( 'key' => 'property_type', 'compare' => 'NOT REGEXP', 'value' => array('HU10', 'HU11', 'Etc'))
)

任何建议将不胜感激。

也:我还尝试创建另一个ACF字段,该字段将邮政编码的字符限制为仅4个字符以对此进行排序,但是因为我使用的是XML导入器作为数据,所以它会覆盖限制,因此,如果创建代码来创建创建该代码的新剥离版本的函数更容易,那么我也将不胜感激,因为我找不到执行此操作的方法。

1 个答案:

答案 0 :(得分:0)

已解决:因此,我终于设法找到了解决方案。我发现您实际上可以使用表达式[[:space:]]来搜索条目中的空格,在这种情况下,这非常方便,因为所有邮政编码之间都有一个空格。

因此,如果我使用url查询来搜索 HU3 ,它将实际上仅通过使用_GET['postcode'].'[[:space:]]'作为 value 来搜索邮政编码和间距。 REGEXP作为比较,表示我获得了所需的精确匹配。

希望这对将来的人会有帮助。