我正在使用 WordPress 主题,在管理控制面板中我添加了主题设置,在这里我可以编写一些变量,例如 map 的经度和纬度(有效)以及电子邮件,我需要联系表格,但这不起作用,我想问题是我使用的
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/contact-form/contactform.js"></script>
事实上,如果我对 map 做同样的事情,现在就是
<div id="gmapp"></div>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var lat;
var lng;
lat=<?php echo($GLOBALS['desklab_theme_settings']['latcord_text']);?>;
lng=<?php echo($GLOBALS['desklab_theme_settings']['lngcord_text']);?>;
var latlng = new google.maps.LatLng(lat,lng);
var options = {
zoom: 15,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('gmapp'), options);
var marker = new google.maps.Marker(
{
position: latlng,
map: map
}
);
</script>
我尝试这样写:
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/contact-form/map.js"></script>
但是我没有看到 map ,也没有找到变量。
那么我应该怎么做才能像处理 lat 和 lng 一样从设置中获取变量呢?我应该像使用 map 一样在 php 中编写 js 代码吗?
最佳答案
您应该将部分代码移至map.js 文件:
//map.js
var generateMap = function(lat,lng) {
var latlng = new google.maps.LatLng(lat,lng);
var options = {
zoom: 15,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('gmapp'), options);
var marker = new google.maps.Marker(
{
position: latlng,
map: map
}
);
}
然后从你的 php 中执行
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/contact-form/map.js"></script>
<script type="text/javascript" >
var lat=<?php echo($GLOBALS['desklab_theme_settings']['latcord_text']);?>;
var lng=<?php echo($GLOBALS['desklab_theme_settings']['lngcord_text']);?>;
generateMap(lat,lng);
</script>
参见this SO question有关从 PHP 到 JS 数据传递的其他解决方案
关于WordPress 主题中 PHP 变量到 js 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13786890/