javascript - 增强型电子商务数据层 WooCommerce

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

我正在尝试为 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>

非常感谢你的帮助!

此致,
安东

最佳答案

你可以尝试这样的事情:

<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>

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

祝你好运!

关于javascript - 增强型电子商务数据层 WooCommerce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39831875/

相关文章:

javascript - 通过单击 div 隐藏和显示文本

Javascript 数组连接不起作用。为什么?

javascript - 打印出迭代中的每个数组值,值是未定义的

javascript - FusionCharts 中的图例(饼图)- PHP

php - 如何从 3 个字段(月、日、年)中获取值并将所有这三个字段作为单个字段插入(MySQL)?

javascript - 使用 webpack Laravel 5.4 加载 Materialize 时出现 jQuery 错误

php - 将 unix 时间戳从 php 文件存储到 mysql

php - WooCommerce:如果购物车中已存在产品,则增加购物车商品数量

php - 单独获取 Woocommerce 中每个购物车和订单商品的税率

wordpress - WooCommerce Paypal Iframe