我正在使用WordPress插件,该插件将帖子显示为谷歌地图上的标记。网站的前端使用定义的纬度和经度正确显示标记,但WP管理面板中的各个帖子部分中缺少这些值。该插件像这样输出纬度和经度,并在编辑器窗格中呈现地图的JavaScript文件中输出。如前所述,这些不返回谷歌地图的值。<?php echo esc_js($this->latitude()) ?><?php echo esc_js($this->longitude()) ?>在同一部分中,但使用不同的代码,纬度和经度值使用 和 返回。我附上了一张显示其显示方式的屏幕截图。默认情况下,地图使用全球纬度和经度将标记居中。<?php esc_attr_e( $marker->latitude() )?><?php esc_attr_e( $marker->longitude() )?>当 I 变量 ,其中包含位置的值时,将返回纬度和经度值。var_dump$marker_listarray(1) { [21]=>object(Marker)#11821(12) { ["id":"Marker":private]=>int(21) ["post_id":"Marker":private]=>int(406) ["is_main":"Marker":private]=>bool(!0) ["title":"Marker":private]=>string(16)"Vancouver Island" ["categories":"Marker":private]=>string(23)"a:1:{i:3;s:6:"canada";}" ["tags":"Marker":private]=>string(6)"a:0:{}" ["latitude":"Marker":private]=>float(49.4178) ["longitude":"Marker":private]=>float(-125.197) ["marker_logo_id":"Marker":private]=>int(10) ["infobox_descritpion":"Marker":private]=>string(367)"Text" ["infobox_image":"Marker":private]=>string(1)"0" ["infobox_style":"Marker":private]=>string(30)"novo-map_infobox_style_default" }}我该如何调试PHP以找出为什么没有返回值?
3 回答
胡子哥哥
TA贡献1825条经验 获得超6个赞
我认为接受字符串值。 并且数据类型为 。您应该将它们转换为esc_js
$this->latitude()
$this->longitude()
float
string
试试这个。它可能会帮助你
<?php echo esc_js($this->latitude().'') ?> <?php echo esc_js($this->longitude().'') ?>
交互式爱情
TA贡献1712条经验 获得超3个赞
您发送一个“浮点数”,但需要一个“字符串”。在这种情况下,我建议不要使用该函数。所以:esc_js
esc_js
如果您100%确定您的类型始终是“浮点数”。您可以直接显示您的价值:
<?php echo $this->longitude() ?>
但!如果你不是100%确定,为了防止XSS漏洞,你可以强制浮动类型如下(看看也浮点):
<?php echo (float) $this->longitude() ?>
如果你想尊重原始演员,另一种可能的方法就是使用json_encode,就像这样:
<?php echo json_encode($this->longitude()) ?>
第二种方法,可能是你想做的。
慕桂英546537
TA贡献1848条经验 获得超10个赞
esc_js函数仅接受字符串,如此处所述
您需要将浮点值转换为字符串,如下所示。
<?php
echo esc_js((string)$this->latitude());
echo esc_js((string)$this->longitude());
添加回答
举报
0/150
提交
取消