【发布时间】:2016-02-18 18:02:24
【问题描述】:
我目前正在尝试获取 WooCommerce 结帐的订单总额,以便可以通过 Google AdWords 转换发送。
代码如下:
<?php
$get_order_total = floatval( preg_replace( '#[^\d.]#', '', $order->get_formatted_order_total() ) );
?>
<!-- Google Code for ATS Conversion Page -->
<?php if ( $get_order_total ) { ?>
<script type="text/javascript">
/* <![CDATA[ */
var google_conversion_id = 1066553725;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "CzWXCLmwn1YQ_aLJ_AM";
if (<?php echo $get_order_total; ?>) { var google_conversion_value = <?php echo $get_order_total; ?>; var google_conversion_currency = "GBP"; }
var google_conversion_currency = "GBP";
var google_remarketing_only = false;
/* ]]> */
</script>
<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="//www.googleadservices.com/pagead/conversion/1066553725/?value=<?php echo $get_order_total; ?>&currency_code=GBP&label=CzWXCLmwn1YQ_aLJ_AM&guid=ON&script=0"/>
</div>
</noscript>
<?php } ?>
由于某种原因,当它出现在页面上时 $get_order_total = floatval( preg_replace( '#[^\d.]#', '', $order->get_formatted_order_total() ) );它破坏了页面并产生了这个错误:
在第 409 行的 /woocommerce/checkout/thankyou.php 中的非对象上调用成员函数 get_formatted_order_total()
我环顾四周并尝试添加全局 $woocommerce 变量,但没有成功。我们使用的版本是2.1.12。
您的帮助将不胜感激。
【问题讨论】:
-
问题是
$order。它说它不是一个对象,所以变量是错误的。 -
没错,它就在错误消息中。如果你有订单ID,可以
$order = wc_get_order( $order_id )获取订单对象。另外$order->get_total()可能意味着您不需要做所有preg_replace。哦,更新你的 WooCommerce!你有几个版本。
标签: php wordpress woocommerce