首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Wordpress自定义字段的值填充Javascript代码?

问用Wordpress自定义字段的值填充Javascript代码?
EN

WordPress Development用户
提问于 2018-02-03 19:34:30
回答 1查看 1.7K关注 0票数 0

我的博客上有大量的城市页面,我需要在每个城市页面上放置特定于城市的地图和额外的控制来建立一条路线。

这就是我想要创建的布局:

我正在使用Mapbox库作为地图。地图和方向控件的JS文件和样式托管在Mapbox上:

代码语言:javascript
复制
<script src='https://api.tiles.mapbox.com/mapbox-gl-js/v0.44.0/mapbox-gl.js'></script>
<script src='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-directions/v3.1.1/mapbox-gl-directions.js'></script>
<link rel='stylesheet' href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.44.0/mapbox-gl.css' />        
<link rel='stylesheet' href='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-directions/v3.1.1/mapbox-gl-directions.css' type='text/css' />

要将地图放在页面上,使用以下代码:

代码语言:javascript
复制
<div id='map'></div>

<script>
mapboxgl.accessToken = 'YourAccessToken';
var map = new mapboxgl.Map({
    container: 'map',
    style: 'mapbox://styles/mapbox/streets-v9',
    center: [-71.4512, 43.6568],
    zoom: 13
});

map.addControl(new MapboxDirections({
    accessToken: mapboxgl.accessToken
}), 'top-left');
</script>

因为我需要覆盖许多城市,所以我为城市页面创建了一个新的模板。因此,我只是简单地在头和页面内容/侧栏之间添加上面提到的代码(请参见布局模型)。

问题是,我不知道如何将每个特定城市/地图的纬度/经度值传递给Mapbox脚本中的这一部分代码:

代码语言:javascript
复制
    center: [-71.4512, 43.6568]

理想情况下,如果我可以通过自定义字段在编辑页中输入它们:

这两个值将以某种方式填充到脚本中。也许可以在页面模板中为这两个参数添加某种占位符:

代码语言:javascript
复制
center: [%latitude%, %longitude%]

因此,它们将从相应的字段中填充,并加载特定的城市地图。如果有人能为我指明正确的方向,我会很感激的。

谢谢!

EN

回答 1

WordPress Development用户

发布于 2018-02-03 20:05:52

如果我是你的话,我会把GPS坐标存储在后置元中。如果您想要更改,可以在编辑页上显示一个元框。否则,添加一次后元,并忘记它。

然后,您可以使用wp_footer钩子打印javascript,并以post值作为坐标。

代码语言:javascript
复制
namespace StackExchange\WordPress;

add_action( 'wp_footer', __NAMESPACE__ . '\wp_footer' );
function wp_footer() {
    echo '<script>var map = new mapboxgl.Map('.
    wp_json_encode( [ 'container' => 'map', 'center' => \get_post_meta( \get_the_ID() 'gpsCoordinates', true ) ])
        .');</script>';
}

如果已经有一个包含mapboxgl代码的命名脚本排队,那么您可以只使用添加内联脚本。

代码语言:javascript
复制
namespace StackExchange\WordPress;

add_action( 'wp_enqueue_scripts', __NAMESPACE__ . 'wp_enqueue_scripts' );
function wp_enqueue_scripts() {
    wp_add_inline_script( 'mapbox', 
        'var map = new mapboxgl.Map('.
            wp_json_encode( [ 'container' => 'map', 'center' => \get_post_meta( \get_the_ID() 'gpsCoordinates', true ) ])
        .');'
    );
}

如果您还不知道如何添加元框的文档,请看一看。

票数 4
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/293076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档