这是一个使用wp_localize_script()
, 正如其他人所建议的那样。它只是稍微干净了一点,因为您没有将PHP与JS混合,而且通常是一种将内容从服务器端传递到JavaScript的简洁方法。
首先,将以下代码放入插件或函数中。php(我使用了一个插件,因此我对其进行了相应的命名,但您可以随意命名):
function register_plugin_scripts() {
wp_register_script(\'my-coordinates-script\',
plugins_url( \'my-plugin/js/using-coordinates-here.js\' ),
\'jquery\',
\'0.1\');
global $post;
$fl_lat = get_post_meta($post->ID, \'fl_lat\', true); // "51.508742" or empty string
$fl_long = get_post_meta($post->ID, \'fl_long\', true); // "-0.120850" or empty string
if( !empty($fl_lat) && !empty($fl_long) ) {
wp_localize_script(\'my-coordinates-script\', \'my-coordinates\', array(
\'lat\' => $fl_lat,
\'long\' => $fl_long
)
}
wp_enqueue_script( \'my-coordinates-script\', plugins_url( \'my-plugin/js/using-coordinates-here.js\' ) );
} // end register_plugin_scripts
add_action( \'wp_enqueue_scripts\', \'register_plugin_scripts\' );
请注意
wp_localize_script()
必须在调用
wp_register_script()
(对于将使用PHP生成的lat-long坐标的文件),以及
wp_enqueue_script()
. 这应该在页面源中输出如下内容:
<script type=\'text/javascript\'>
/* <![CDATA[ */
var my-coordinates = {"lat":"51.508742","long":"-0.120850"};
/* ]]> */
</script>
<script type=\'text/javascript\' src=\'http://yourserver/plugins/my-plugin/js/using-coordinates-here.js?ver=0.1\'></script>
然后在JS文件中,您可以让函数使用
my-coordinates
对象:
function initialize() {
lat = 0;
long = 0;
if (typeof my-coordinates !== \'undefined\' && my-coordinates.lat && my-coordinates.long) {
lat = my-coordinates.lat;
long = my-coordinates.long;
}
var mapProp = {
center: new google.maps.LatLng(lat, long),
zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
}
如果代码中有不清楚的地方,请随时提问。