PHP 和 HTML 代码在 PHP 函数内 - Wordpress 2GIS Shortcode

PHP and HTML code inside PHP function - Wordpress 2GIS Shortcode

我正在尝试将 2GIS 地图放入 wordpress 短代码中。我不能使用 HTML 小部件,因为我需要 PHP,我将使用 PHP 从 wordpress post 字段中提取纬度和经度。这将在单个 post 页面中。 我回显了 HTML 代码,因为它应该在 wordpress 短代码的内部函数中。但后来我在第 55 行收到错误。

解析错误:语法错误,意外 'map' (T_STRING),应为“;”或第 55 行的“,”

请帮助我理解这一点。

<?php
function test_func(){
  echo '
    <html>
      <head>
          <title>API карт 2ГИС</title>
          <script src="https://maps.api.2gis.ru/2.0/loader.js?pkg=full"></script>
          <script type="text/javascript">
              var map;

              DG.then(function () {
                  map = DG.map('map', {                // line 55
                      center: [54.98, 82.89],
                      zoom: 13
                  });

                  DG.marker([54.98, 82.89]).addTo(map);
              });
          </script>
      </head>
      <body>
          <div id="map" style="width:800px; height:400px"></div>
      </body>
  </html>
  ';
}

add_shortcode('test_shortcode', 'test_func');
?>

您将字符串封装在单引号中并在字符串中使用了单引号,这让编译器感到困惑。

所以你需要做的是转义内部单引号(我在这里只展示一小段代码),比如...

 map = DG.map('map',

使用 \

转义单引号
 map = DG.map(\'map\',

这可能也有效,而且更容易,尤其是当您有更多引号时:

<?php
function test_func(){
?>
  <html>
      <head>
          <title>API карт 2ГИС</title>
          <script src="https://maps.api.2gis.ru/2.0/loader.js?pkg=full"></script>
          <script type="text/javascript">
              var map;

              DG.then(function () {
                  map = DG.map('map', {                // line 55
                      center: [54.98, 82.89],
                      zoom: 13
                  });

                  DG.marker([54.98, 82.89]).addTo(map);
              });
          </script>
      </head>
      <body>
          <div id="map" style="width:800px; height:400px"></div>
      </body>
  </html>
<?php
}

add_shortcode('test_shortcode', 'test_func');
?>