您好,很抱歉延迟回复。我不确定我是否理解这个要求。你是指新的基于块的小部件编辑器,或经典小工具?
亲爱的朋友,再见,
嗯,我喜欢做以下事情:
我想添加一个搜索/或者说检索-在osm-endpoint上,看起来是这样的
[out:csv(::id,::type,::lon,::lat,accility,name,“地址:邮政编码”,“地址”,“街道”,“住址:门牌号”,“联系人:网站”,网站,“联系方式:电子邮件”)]
[超时:600];
rel[boundary=administrative][admin_level=6][name=“慕尼黑”]->.city;
(nwr[设施=医院][名称](大约城市:300);
nwr[设施=学校][名称](大约。城市:300);
nwr[设施=教堂][名称](大约。城市:300);
nwr[设施=儿童保育][名称](大约。城市:300);
nwr[amenity=nursing_home][name](大约城市:300););
偏心;
好吧,那就是:如果我能够获取数据,那么我想在wordPress-site上的小部件中的一个小表格中显示这一点
<?php(电话)
/*
插件名称:学校小工具
描述:使用Overpass Turbo和令人敬畏的区块显示附近的学校。
版本:1.0
作者:foo bar
*/
//直接访问时退出
if(!defined('ABSPATH'))退出;
//包括ACF
include_once(插件dir_path(__FILE_)。'acf/acf.php');
//注册ACF字段
函数寄存器_acf_fields(){
if(函数存在('acf添加local_field_group')){
acf_add_local_field_group(数组(
“key”=>“group_1”,
“title”=>“附近学校小工具”,
“字段”=>数组(
阵列(
“key”=>“field_1”,
“label”=>“纬度”,
'名称'=>'纬度',
“type”=>“number”,
“必需”=>1,
),
阵列(
“key”=>“field_2”,
“label”=>“经度”,
“name”=>“longitude”,
“type”=>“number”,
“必需”=>1,
),
阵列(
“key”=>“field_3”,
“label”=>“半径(km)”,
“name”=>“radius”,
“type”=>“number”,
“必需”=>1,
),
),
“location”=>数组(
阵列(
阵列(
“param”=>“post_type”,
“运算符”=>“==”,
“value”=>“page”,
),
),
),
));
}
}
add_action('acf/init','register_acf_fields');
//将必要的脚本排队
函数acf_schools_widget_enqueue_scripts(){
wp_enqueue_script('jquery');
}
add_action('wp_enqueue_scripts','acf_schools_widget_enqueue_scripts');
//显示学校的短代码
函数display_nearby_schools($atts){
$latitude=get_field(“纬度”);
$longitude=get_field(“经度”);
$radius=get_field(“半径”);
if(!$latitude||!$longitude||!$半径){
return'请提供纬度、经度和半径。';
}
//跨越API URL
$query='[out:json][timeout:25];(node[“accility”=“school”](大约:'.($radius*1000).',')$纬度。','$经度。'););外体;>;外骨架qt;';
$url='http://overpss-api.de/api/cinterpreter?数据=' . urlencode($query);
//从天桥API获取数据
$response=wp_remote_get($url);
if(iswp_error($response)){
return'无法检索数据';
}
$body=wp_remote_retrieve_body($response);
$data=json_decode($body,true);
if(空($data['elements']){
return'指定区域内没有学校';
}
//显示数据
$output='<ul class=“附近学校”>';
foreach($data['elements']作为$element){
if(isset($element['tags']['name'])){
$output.='<li>';
$输出。=esc_html($element['tags']['name']);
if(isset($element['tags']['website'])){
$output.='-<a href=“'.esc_url($element['tags']['website']]).'”target=“_blank”>'。esc_html($element['tags']['website'])。”</a> ';
}
$output.='</li>';
}
}
$output.='</ul>';
返回$output;
}
add_shortcode('nearby_schools','display_nearby_schools');
嗯&我想从openstreet-map获取数据,并将其显示在wordpress-site上的小部件中。你怎么想?我们能在你的插件支持下做到吗?
我不认为这个插件能有多大帮助,因为你所描述的听起来像是需要自定义实现的东西。您可以利用自定义字段支持,如果您想将特定帖子上的地图作为自定义字段而不是块,那么您仍然需要实现逻辑来获取数据并根据需要进行操作,以便以不同的方式显示位置。
晚上好,亲爱的乔戈斯
首先:非常感谢您的快速回复&很高兴收到您的回复。令人惊叹的。我仔细看了你推荐的选项——这听起来很有趣——我会更深入地研究这一切
我不认为这个插件能有多大帮助,因为你所描述的听起来像是需要自定义实现的东西。如果您想将特定帖子上的地图作为自定义字段而不是块,那么您可能可以利用自定义字段支持,但您仍必须实现逻辑以获取数据并根据需要进行操作,以便以不同的方式显示位置。
太棒了-我很高兴成为这个伟大论坛的一员-我很满意你的推荐
所有这些看起来都很有希望
https://github.com/gsarig/ootb-openstreetmap/releases/tag/2.8.0
自定义字段支持:2.8.0版本的亮点是支持“位置”自定义字段,它允许您存储帖子或帖子类型的位置。数据按照官方指南进行存储。
非常感谢你所做的一切!!
请继续你的伟大计划&它太棒了!!!
谢谢你的客气话。
顺便说一句,如果自定义字段适用于您想要的操作,那么您也许可以查看[ootb_query]短代码。例如,类似下面的内容将输出具有位置的所有帖子的位置:
[ootb_query source=“地理数据”]
如果您想将其放在PHP文件中的任何位置,而不是放在post编辑器中,可以使用do_短代码,例如:
<?php echo do_shortcode('[ootb_query source=“geodata”]');?>
对于所有可用的选项,您可以查看插件的自述文件.