针对单个自定义帖子类型帖子中的多个位置进行查询

时间:2019-06-28 作者:Mitchell

我有一个自定义的“事件”post类型,每个事件可以有一个可变数量的“位置”(lat/lng),存储为meta。我需要能够获得基于地图边界的“事件”帖子。

我完全可以控制如何存储帖子位置的元数据,但我想不出创建meta\\u查询的方法来检查事件中的每个位置,看看它是否符合最小/最大纬度/液化天然气。

以下是一个适用于单个位置的示例:

$args = array(
    \'post_type\' => \'event\',
    \'posts_per_page\' => -1,
    \'meta_query\' => array(
        \'relation\' => \'AND\',
        array(
            \'key\' => \'coords_0_lat\',
            \'value\' => array($lat_min, $lat_max),
            \'compare\' => \'BETWEEN\',
            \'type\' => \'DECIMAL(10,7)\'
        ),
        array(
            \'key\' => \'coords_0_lng\',
            \'value\' => array($lng_min, $lng_max),
            \'compare\' => \'BETWEEN\',
            \'type\' => \'DECIMAL(10,7)\'
        )
    )
);
$query = new WP_Query($args);
但既然事件可以有任意数量的位置,我真的不能只做coords\\u 0。。。,coords\\u 1。。。,coords\\u 2。。。,等

我发现了一些关于过滤“posts\\u where”的信息,可以将“where”改为“LIKE”而不是“=”,但据我所知,我认为这在我的情况下不起作用,因为它不会将某个位置的lat/lng保持在一起。(Infromation here under "4. Sub custom field values")

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

最后我不得不重新设计我的工作方式。我没有将位置保存为元数据,而是为位置创建了一个新的自定义post类型,每个位置都有lat/lng和保存到其中的事件ID。因此,现在我能够查询所有位置,并从中构建事件ID数组。

相关推荐

Search query with quotes

我试图在wordpress中的自定义帖子类型中搜索WP\\U查询。我有这个要求$wp_query = Wp_Query([\'post_type\' => \'property\', \'s\' => \'test\']); 这很好用。但当我的财产有带撇号的所有权时test\'s, 它不工作,在我的搜索属性中进入搜索页面后,我得到test\\\'s, 当我试图通过这个属性查找不起作用的帖子时,也当我硬编码更改搜索字符串而不使用反斜杠时。有什么办法解决这个问题吗?使用一些自定义过滤器或