如何在自定义邮寄类型中搜索地图地址?

时间:2015-06-17 作者:Raptor

我用Custom Post Type UI 插件并添加了一个字段“address”(谷歌地图类型),其中Advanced Custom Fields 插件。

根据的响应WP_Query(\'post_type=shop\');, 我得到以下信息:

$shop = WP_Query(\'post_type=shop\');
while($shop->have_post()) {
  $shop->the_post();
  $location = get_field(\'map-location\');
  if($location != null) {
    echo $location[\'address\'];
  }
}
这是我的地址列表。如何使用此“地址”进行搜索?假设用户想要搜索位于“伦敦”的店铺,我如何才能做到这一点?

谢谢

<小时>

UPDATE

搜索“15”的示例结果:

  • 筲箕灣東大街15號B地下
  • 九龍觀塘偉業街103號振邦工業大廈地鋪
  • 九龍土瓜灣旭日街一號 瑞英工業大廈第一期A.座地下

3 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

你需要一个meta_query 类似这样:

$args = array(
    \'post_type\' => \'shop\',
    \'meta_query\' => array(
        array(
            \'key\' => \'map-location\',
            \'value\' => \'London\',
            \'compare\' => \'LIKE\' // the = operator might work depending on how your data is stored
        ),
    )
);
注意:我正在对ACF存储数据的方式进行一些假设。

SO网友:bonger

可以使用正则表达式RLIKE:

$val = \'15\';
$args = array(
    \'post_type\' => \'shop\',
    \'meta_query\' => array(
        array(
            \'key\' => \'map-location\',
            \'value\' => \'s:7:"address";s:[0-9]+:"[^"]*\' . preg_quote( $val ) . \'[^"]*";\',
            \'compare\' => \'RLIKE\'
        ),
    )
);
尽管如果您的地址数据包含双引号,它可能会失败。如果你总是有lat 和alng 字段后面的address 然后,您可以扩展表达式以匹配这些表达式,并且不再需要[^"] 位(用点代替)。

SO网友:Shrikant D

您可以使用元查询来搜索特定字段文本。

 $val = \'London\';
 $args = array(
   \'post_type\' => \'shop\',
   \'meta_query\' => array(
     array(
        \'key\' => \'map-location\',
        \'value\' => $val,
        \'compare\' => \'LIKE\' 
     ),
   )
 );
 $query = new WP_Query($arg);

Class Reference/WP Query

结束

相关推荐

Searching post types

是否可以从搜索表单中获取用户输入,使用该表单通过WP_Query 类,然后将用户重定向到页面模板以显示结果?例如假设您有一个搜索输入city, state 或zip 然后输入California,然后捕获该输入,然后使用WP\\U查询搜索自定义帖子类型“位置”。它会找到4个匹配的位置,然后重定向到“位置”页面,该页面将显示所有4个位置。你会怎么做?Note: 这不是家庭作业,而是客户端功能。是的,有插件,但由于这是如何定制的,以及他们希望它如何布局,它必须从头开始构建。