将特定于交易的转换跟踪从Adwords添加到WooCommerce

时间:2017-07-28 作者:bbruman

AdWords文档介绍了如何Track transaction-specific conversion values 说明PHP代码如下:

<!-- Google Code for Purchase Conversion Page -->
<script type="text/javascript">
/* <![CDATA[ */
var google_conversion_id = 1234567890;
var google_conversion_language = "en";
var google_conversion_format = "1";
var google_conversion_color = "666666";
var google_conversion_label = "xxxxXXx1xXXX123X1xX";
if (<? echo $totalValue ?>) {
    var google_conversion_value = <? echo $totalValue ?>;
    var google_conversion_currency = <? echo $currency ?>;
}
    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/1234567890/?value=
<? echo $totalValue ?>&amp;currency_code=<? echo $currency ?>
&amp;label=xxxxXXx1xXXX123X1xX&amp;guid=ON&amp;script=0">
    </div>
</noscript>
</body>
这向我表明了两件事:

我们需要将订单总价值放入$totalValue 变量和货币值转换为$currency.</body> 在页面上除了在订单完成时创建自己的自定义“谢谢”页面并将其添加到自定义页面模板中所需的位置之外,什么是连接到默认“谢谢”页面的最佳方式?

WooCommerce文档中有一些内容Custom tracking code for the thanks page 只是简单地挂在woocommerce_thankyou. 缩小后看起来像:

add_action( \'woocommerce_thankyou\', \'my_custom_tracking\' );

function my_custom_tracking( $order_id ) {

// Lets grab the order
$order = wc_get_order( $order_id );

// Do whatever else
}
但没有特别提到AdWords。

我通过自己的测试知道,一旦我们定义$order = wc_get_order( $order_id ); 我们可以简单地使用以下方法获取变量:

$totalValue = $order->get_total();
$currency = $order->currency;
这将产生这样一个完整的功能:

add_action( \'woocommerce_thankyou\', \'my_custom_tracking\' );

function my_custom_tracking( $order_id ) {

$order = wc_get_order( $order_id );
$totalValue = $order->get_total();
$currency = $order->currency;
?>

<!-- Google Code for Purchase Conversion Page -->
<script type="text/javascript">
/* <![CDATA[ */
var google_conversion_id = 1234567890;
var google_conversion_language = "en";
var google_conversion_format = "1";
var google_conversion_color = "666666";
var google_conversion_label = "xxxxXXx1xXXX123X1xX";
if (<?php echo $totalValue ?>) {
    var google_conversion_value = <?php echo $totalValue ?>;
    var google_conversion_currency = <?php echo $currency ?>;
}
    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/1234567890/?value=
<?php echo $totalValue ?>&amp;currency_code=<?php echo $currency ?>
&amp;label=xxxxXXx1xXXX123X1xX&amp;guid=ON&amp;script=0">
    </div>
</noscript>
<?php
}
但不允许我们把它放在</body> 正如AdWords文档所述。

我在WooCommerce for AdWords中找不到任何关于交易特定值的信息,至少没有明确的信息。有很多插件,但如果只需添加一个函数(可能是上面的函数),它们似乎都有点过头了(如果我错了,请纠正我)。

我的问题是:

不管怎样,上述功能都可以正常工作吗</body> 就像谷歌建议的那样

2 个回复
最合适的回答,由SO网友:alev 整理而成

作为WooCommerce AdWords Conversion Tracking 插件我可以给你一些问题的答案,以及一些使用插件的理由,尤其是我们的插件。

回答您的问题:

您的功能可能会受损或根本不起作用。原因是WordPress会自动过滤出CDATA标记(内容部分中的所有内容介于<body></body>). 你对此无能为力。无法关闭过滤器。这是一个很久以前就报告过的错误:http://core.trac.wordpress.org/ticket/3670 有一个实验性的变通方法,但它可能不会适用于所有主题。

理论上是的。但谷歌的指导更像是一种建议。不管怎样,标记都会起作用。如果你把它放在页眉或页脚,或者直接放在标签后面,这并不重要。如果您不想编辑主题模板文件,那么使用WordPress精确定位它是一项非常困难的任务。

是的。您缺少:重复数据消除、禁止跟踪失败的付款、税务和发货排除、避免跟踪管理员和店铺经理。

重复数据消除:如果访问者出于任何原因重新加载thankyou页面,则会跟踪两次(甚至更多次)订单。

付款失败:如果付款失败,仍然会触发Thankyu页面,从而触发您的跟踪代码。

税务和发货:通常你不想跟踪发货和税务,只想跟踪产品价格。要获得不含税和装运的价值,您必须使用get\\u subtotal()。

在我们的插件中,我们有上述所有问题的解决方案。我们正在研究更有趣的功能。

一般来说,如果插件不仅仅包含简单的功能,还使用最佳实践来避免性能拖累并确保安装安全,那么插件可能是一件好事。

SO网友:Tim Elsass

从您为AdWords引用的文档中可以看出:“插入标记时,您将把它放在页面的静态部分,位于节中。”它没有说明must 位于结束body标记的正上方,只是提供了不同公共语言的示例代码。这是一个普遍的想法,因为谷歌过去建议将谷歌分析脚本直接放在结束正文标记的上方,但现在建议将其放在头部。所以是的,你所拥有的应该有用!

你可能会错过什么?在用户的旅程中,从a点到B点可能会发生很多事情,但这也是使用插件的要点之一。如果插件专注于做一件事并把它做好,那么它们不一定会有巨大的开销。

也许作为网站的管理员或开发人员,您不希望通过系统跟踪您的测试。将代码放入其中,您必须包含一些额外的逻辑来处理它。

失败的支付和重复交易肯定会频繁发生在网上商店,所以你不希望在这些情况下也对其进行跟踪。

随着时间的推移,当您偶然发现这些情况时,您最终会编写更多的代码来处理它们,而如果您只使用经验证的工作解决方案,就可以在出现问题时为自己节省大量的担心和精力!

结束

相关推荐