是否使用WordPress自定义字段中的值填充Java代码?

时间:2018-02-03 作者:vvy

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

这是我想要创建的布局:

City Page Layout

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

<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\' />
要在页面上放置地图,请使用以下代码:

<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脚本中的这部分代码:

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

Edit City Page - custom fields

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

center: [%latitude%, %longitude%]
以便从相应的字段填充它们,并加载特定的城市地图。如果有人能为我指出正确的方向,我将不胜感激。

非常感谢。

1 个回复
SO网友:Nathan Johnson

如果我是你,我会将GPS坐标存储在post meta中。如果您想更改,可以在编辑页面上显示一个元框。否则,只需添加一次post meta就可以了。

然后您可以使用wp_footer 钩子以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, 那你就可以add an inline script.

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 ) ])
        .\');\'
    );
}
查看文档了解如何add meta boxes, 如果你还不知道的话。

结束

相关推荐

javascript ajax and nonce

在动态创建表单时,我很难使用Wordpress nonce验证通过对php后端的XML请求来实现nonce。我同意表单构建版本wp_nonce_field( \'delete-comment_\'.$comment_id ); 因此,在通过javascript本地化时,我尝试使用其他nonce选项。$nonce = wp_create_nonce( \'my-action_\'.$post->ID ); 然后要验证,似乎有两种选择。check_ajax_referer( \'p