【问题标题】:Enhanced Ecommerce dataLayer WooCommerce增强的电子商务数据层 WooCommerce
【发布时间】:2016-10-03 12:38:00
【问题描述】:

我正在尝试为 WooCommerce 感谢页面设置数据层。看看我到目前为止所做的事情(变量还没有完全设置好):

function dataLayer_google_gtm( $order_id ) {

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

    // Products
    $products = $order->get_items();
    ?>

    <script>
        dataLayer.push({
        'ecommerce': {
            'purchase': {
                'actionField':{
                    'id':'<?php echo $order->get_order_number(); ?>',
                    'affiliation':'CHACAFOODS', 
                    'revenue':'<?php echo $order->get_order_total(); ?>',
                    'tax':'<?php echo $order->get_total_tax(); ?>',
                    'shipping':'<?php echo $order->get_shipping(); ?>',
                    'coupon':'<?php echo $order->get_order_discount_total(); ?>',
                },
                window['service'].push('products':,[
                <?php
                    $count = 0;
                    foreach( $products as $item_id => $item ) {
                        $count++;
                        $product = $order->get_product_from_item( $item ); ?>
                        {
                            'name':<?php echo $item['name']; ?>',
                            'id':
                            'price': '<?php echo $order->get_line_subtotal( $item ); ?>',
                            'brand':
                            'category':
                            'variant':
                            'quantity': '<?php echo $item['qty']; ?>'
                        }
                <?php if ( count( $order->get_items() ) > $count ) { echo ","; } ?>
                <?php } ?>
                ]);
            }
        }
        });
    </script>
    <?php
}
add_action( 'woocommerce_order_status_completed', 'prefix_service_conversion_tracking' );

谁能告诉我上面的结构是否会像下面的增强型电子商务结构一样?

谷歌数据层结构:

<script>
// Send transaction data with a pageview if available
// when the page loads. Otherwise, use an event when the transaction
// data becomes available.
dataLayer.push({
  'ecommerce': {
    'purchase': {
      'actionField': {
        'id': 'T12345',                         // Transaction ID. Required for purchases and refunds.
        'affiliation': 'Online Store',
        'revenue': '35.43',                     // Total transaction value (incl. tax and shipping)
        'tax':'4.90',
        'shipping': '5.99',
        'coupon': 'SUMMER_SALE'
      },
      'products': [{                            // List of productFieldObjects.
        'name': 'Triblend Android T-Shirt',     // Name or ID is required.
        'id': '12345',
        'price': '15.25',
        'brand': 'Google',
        'category': 'Apparel',
        'variant': 'Gray',
        'quantity': 1,
        'coupon': ''                            // Optional fields may be omitted or set to empty string.
       },
       {
        'name': 'Donut Friday Scented T-Shirt',
        'id': '67890',
        'price': '33.75',
        'brand': 'Google',
        'category': 'Apparel',
        'variant': 'Black',
        'quantity': 1
       }]
    }
  }
});
</script>

非常感谢您的帮助!

最好的问候, 安东

【问题讨论】:

    标签: javascript php woocommerce google-tag-manager hook-woocommerce


    【解决方案1】:

    你可以试试这样的:

    <script>
          dataLayer.push({
              'ecommerce': {
                'currencyCode': '<?php echo $order->get_order_currency(); ?>',
                'purchase': {
                  'actionField':{
                    'id': '<?php echo $order->get_order_number(); ?>',
                    'affiliation': 'WooCommerce',
                    'revenue': <?php echo number_format($order->get_subtotal(), 2, ".", ""); ?>,
                    'tax': <?php echo number_format($order->get_total_tax(), 2, ".", ""); ?>,
                    'shipping': <?php echo number_format($order->calculate_shipping(), 2, ".", ""); ?>,
                    <?php if($order->get_used_coupons()): ?>
                        'coupon': '<?php echo implode("-", $order->get_used_coupons()); ?>'
                    <?php endif; ?>
                  },
                  'products': [
                      <?php
                        foreach($order->get_items() as $key => $item):
                          $product = $order->get_product_from_item( $item );
                          $variant_name = ($item['variation_id']) ? wc_get_product($item['variation_id']) : '';
                      ?>
                          {
                            'name': '<?php echo $item['name']; ?>',
                            'id': '<?php echo $item['product_id']; ?>',
                            'price': '<?php echo number_format($order->get_line_subtotal($item), 2, ".", ""); ?>',
                            'brand': '',
                            'category': '<?php echo strip_tags($product->get_categories(', ', '', '')); ?>',
                            'variant': '<?php echo ($variant_name) ? implode("-", $variant_name->get_variation_attributes()) : ''; ?>',
                            'quantity': <?php echo $item['qty']; ?>
                          },
                      <?php endforeach; ?>
                    ]
                }
              }
          });
        </script>
    

    对于品牌,您可以使用然后打印的产品属性。

    祝你好运!

    【讨论】:

    • 非常感谢@webizon。没想到这个话题有答案:)
    • 不客气!这实际上是我写的第一篇文章。如果您对我的分数感到满意,您会接受答案,我会非常高兴。干杯!
    • @webizon 我知道您还必须创建一个Custom Event 触发器,根据这篇文章,事件的值为“...”:stackoverflow.com/questions/38816513/… 在这种情况下,带你代码例如,事件的价值应该是什么?
    • 对不起,我应该进一步解释。因此,如果您在 GTM 加载之前有这段代码,则一旦 GTM 加载,数据层将使用这些值填充,这意味着如果配置为加载增强型电子商务并获取数据,您的通用 Google Analytics 标记将拾取它从数据层。如果您愿意,并且这对于将来的目的也可能更容易并且通常是我这样做的方式,您可以添加一个您调用的事件,例如购买。然后为该事件设置触发器。例如,您将事件与电子商务对象置于同一级别,就在它之前。
    猜你喜欢
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    相关资源
    最近更新 更多