【问题标题】:Google analytics integration for a custom Order received page in Woocommerce 3Woocommerce 3 中自定义订单接收页面的 Google 分析集成
【发布时间】:2019-02-09 23:58:29
【问题描述】:

在 WooCommerce 中完成结帐后,我有一个自定义的感谢页面,我需要将订单数据插入到 Google 电子商务跟踪标签中,以便在分析中记录销售。其中一部分是为订单中的每个项目添加以下内容...

ga('ecommerce:addItem', {
  'id': <?php echo $order_id?>,    // Transaction ID. Required.
  'name': 'ACME Product',          // Product name. Required.
  'sku': '1234',                   // SKU/code.
  'category': 'Product Category',  // Category or variation.
  'price': '10.00',                // Unit price.
  'quantity': '1'                  // Quantity.
});

但使用 PHP 插入订单商品的真实数据,而不是您在此处看到的名称、sku、类别、价格和数量的占位符。

在谷歌搜索答案时,我发现我现在必须使用
wc_display_item_meta ( $item ); 而不是已弃用的$item_meta = new WC_Order_Item_Meta( $item['item_meta'], $_product );

我需要帮助,因为我还不完全了解 PHP,而且我似乎找不到任何接近的例子,我如何开始获取这些值?它是某种类型的 foreach,还是有办法将订单项中的每个项目的单独属性直接解析成一个变量,然后我可以将其插入这些占位符中?

【问题讨论】:

  • 您需要使用 foreach 循环遍历订单商品……如果您的客户订单中有 2 个或更多商品怎么办?您认为如何管理每个项目?您的实际代码似乎只管理一项,您应该更好地使用现有的集成插件......
  • 我知道我需要使用循环来为多个项目执行相同的输出,因此问题。我很想为此使用插件。但是在 WooCommerce 中没有自定义感谢页面。不是我能找到的。你知道一个吗?
  • 我已尝试回答... php 代码可以正常工作,没有错误和错误... 现在您可能需要进行一些小改动,并进行真实测试。但这回答了您的问题标题。
  • @rw-intechra,请看这个question。也许你会看到我做错了什么。

标签: javascript php woocommerce google-analytics orders


【解决方案1】:

尝试以下操作(您可能需要进行一些更改并添加隶属关系 ID)

?>
<script>
ga('require', 'ecommerce');
<?php

// GET the WC_Order object instance from, the Order ID
$order = wc_get_order( $order_id );

$order_key = $order->get_order_key();

$transaction_id = $order->get_transaction_id(); // Doesn't always exist

$transaction_id = $order_id; // (Or the order key or the transaction ID if it exist)

?>
ga('ecommerce:addTransaction', {
    'id':        '<?php echo $transaction_id; // To be checked ?>',
    'affiliation': '<?php echo 'UA-XXXXX-Y'; // replace by yours ?>',
    'revenue':   '<?php echo $order->get_total(); ?>',
    'shipping':      '<?php echo $order->get_shipping_total(); ?>',
    'tax':       '<?php echo $order->get_total_tax(); ?>',
    'currency':      '<?php echo get_woocommerce_currency(); // Optional ?>' 
}); <?php

// LOOP START: Iterate through order items
foreach( $order->get_items() as $item_id => $item ) :
    // Get an instance of the WC_Product object
    $product = $item->get_product();

    // Get the product categories for the product
    $categories = wp_get_post_terms( $item->get_product_id(), 'product_cat', array( 'fields' => 'names' ) );
    $category = reset($categories); // Keep only the first product category
?>
ga('ecommerce:addItem', {
    'id':     '<?php echo $transaction_id; ?>',
    'name':       '<?php echo $item->get_name(); ?>',
    'sku':    '<?php echo $product->get_sku(); ?>',
    'category': '<?php echo $category; ?>',
    'price':      '<?php echo wc_get_price_excluding_tax($product);  // OR wc_get_price_including_tax($product) ?>',
    'quantity': '<?php echo $item->get_quantity(); ?>',
    'currency': '<?php echo get_woocommerce_currency(); // Optional ?>' 
});
<?php
endforeach; // LOOP END
?>
ga('ecommerce:send');
</script>
<?php

此代码经过部分测试,不会引发错误……但需要进行真实测试。我希望它会起作用。

相关:

【讨论】:

  • Loic,请告诉我这段代码应该放在哪里?
  • @АлександраКузнецова 这个代码可以包含在Woocommerce_thankyou钩子里我想...
  • 谢谢。我很想试试这个。我得等几天才能将它合并到另一个开发人员的分支中进行测试,但表面上看起来它可以工作!当我得到它的工作时,我一定会回来并将其标记为已接受的答案。
  • 只是一个更新,非常感谢您提供此代码。它第一次完美运行。我已将其标记为解决方案。
  • @LoicTheAztec,谢谢!;)
猜你喜欢
  • 2018-07-27
  • 1970-01-01
  • 2019-06-05
  • 2019-09-22
  • 2018-06-08
  • 1970-01-01
  • 2016-03-21
  • 2021-10-28
  • 2017-01-21
相关资源
最近更新 更多