2

我正在使用 wordpress 主题,在管理控制面板中我添加了主题设置,在这里我可以编写一些变量,例如地图(作品)的经度和纬度,以及我需要的电子邮件联系表格,但这不起作用,我想问题是我使用

<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/contact-form/contactform.js"></script>

事实上,如果我对地图做同样的事情,那现在就是

<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>

但我没有看到地图,也没有找到变量。

那么我应该怎么做才能像使用 lat 和 lng 一样从设置中获取变量?我应该像使用map一样在php中编写js代码吗?

4

4 回答 4

1

您应该将部分代码移动到 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>

有关从 PHP 到 JS 的数据传递的其他解决方案,请参阅此 SO 问题

于 2012-12-09T12:26:22.260 回答
1

您需要将 map.js 文件重命名为 map.php 之类的文件,以便 PHP 引擎解析它。那么您的来源将是:

<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/contact-form/map.php"></script>

内容仍然是带有您的 PHP 变量的 javascript。

于 2012-12-09T12:26:43.880 回答
1

一个建议。而不是使用bloginfo('template_url')你应该开始使用get_template_directory_uri(),因为以前的被弃用了。

PS。除非我回复帖子,否则我没有评论权限。

于 2012-12-09T13:43:35.027 回答
0

不要忘记回声

<script type="text/javascript" src="<?php echo bloginfo('template_url'); ?>/contact-form/map.js"></script>
于 2012-12-09T12:22:14.547 回答