【发布时间】:2020-10-11 00:33:43
【问题描述】:
我遇到了一个大问题,没有解决方案。 我使用 WordPress 和 Custom-Post-Type (CPT) 和 高级自定义字段 (ACF)。 我创建了一个名为“projekt”的新 CPT 和一个保存 地址、经度和纬度的 ACF “Google Map Field”。坏事是 ACF 字段被序列化保存在 MySQL 数据库中。
我在网上找到了以下 SQL-Query 来计算半径。
$lat = '50.12335';
$lng = '-1.344453';
$radius = 10; // (km)
???....WHERE ( 6371 * acos( cos( radians(" . $lat . ") )
* cos( radians( lat ) )
* cos( radians( lng )
- radians(" . $lng . ") )
+ sin( radians(" . $lat . ") )
* sin( radians( lat ) ) ) ) <= " . $radius . ")"
我不知道如何构建查询,因为查询需要从序列化的 ACF 字段中获取经度和纬度信息。
数据库字段“元值”:
a:13:{s:7:"address";s:44:"Moskauer Straße 5, Düsseldorf, Deutschland";s:3:"lat";d:51.2199565;s:3:"lng";d:6.8044928;s:4:"zoom";i:14;s:8:"place_id";s:114:"EiNNb3NrYXVlciBTdHIuLCBEw7xzc2VsZG9yZiwgR2VybWFueSIuKiwKFAoSCZV-jR3Ny7hHEVVgUQUBF7q8EhQKEgkBGQXwtsu4RxHgwS1K_GAnBQ";s:4:"name";s:16:"Moskauer Straße";s:11:"street_name";s:16:"Moskauer Straße";s:17:"street_name_short";s:13:"Moskauer Str.";s:4:"city";s:11:"Düsseldorf";s:5:"state";s:19:"Nordrhein-Westfalen";s:11:"state_short";s:3:"NRW";s:7:"country";s:11:"Deutschland";s:13:"country_short";s:2:"DE";}
我可以通过以下方式获得我所有的“项目”:
也许可以扩展以下查询
SELECT P.ID, P.post_title, P.post_content, P.post_author, meta_value
FROM wp_posts AS P
LEFT JOIN wp_postmeta AS PM on PM.post_id = P.ID
WHERE P.post_type = 'projekt' and P.post_status = 'publish' and ( meta_key = 'adress' )
ORDER BY P.post_date DESC
结果是:
ID|post_title |post_content|post_author|meta_value
55|Test Projekt| |1 |a:13:{s:7:"address";s:44:"Moskauer Straße 5, Düss...
你有什么解决办法吗?
谢谢!
【问题讨论】:
-
你能把数据在数据库中的样子贴出来吗?
-
我已经用序列化的字符串更新了我的帖子
标签: mysql wordpress google-maps advanced-custom-fields custom-post-type