dpnv33177 2018-06-05 20:20
浏览 70
已采纳

在Woocommerce中的Adword转换代码中添加订单数据

I have an adwords conversion code which I want to add in my child theme.I want to insert the Total purchase Amount in the "value" attribute in this piece of code so that each time the code is triggered the total amount in cart is added to the conversion.

<script async src="https://www.googletagmanager.com/gtag/js?id=AW-806400000"></script>
        <script>
            window.dataLayer = window.dataLayer || [];
            function gtag(){dataLayer.push(arguments);}
            gtag('js', new Date());

            gtag('config', 'AW-806400000"');
            gtag('event', 'conversion', {
                  'send_to': 'AW-806400000"/iHbjCOSfAewkasdowew',
                  'value': 1.0, **[Get the Total from cart and use here]**
                  'currency': 'USD',
                  'transaction_id': ''
              });

        </script>
  • 写回答

1条回答 默认 最新

  • duanlu0386 2018-06-05 20:47
    关注

    Update

    As Reigel suggested, it should be more appropriated in "Order received" end point (thankyou page). Here we target the Order total instead (as cart object doesn't exist anymore).

    So the code should be:

    add_action('wp_head','google_tag_manager_checkout_conversion_script' );
    function google_tag_manager_checkout_conversion_script() {
        // Only on "Order received" page
        if( ! is_wc_endpoint_url('order-received') ) 
            return; // Exit
    
        global $wp;
    
        $order_id  = absint( $wp->query_vars['order-received'] );
        $order_key = isset( $_GET['key'] ) ? wc_clean( $_GET['key'] ) : '';
    
        if ( empty($order_id) || $order_id == 0 )
            return; // Exit
    
        $order = wc_get_order( $order_id );
    
        if ( $order->get_order_key() != $order_key )
            return; // Exit
    
        // Get Order total amount and Order transaction ID
        $order_total    = (float) $order->get_total();
        $transaction_id = $order->get_transaction_id();
    
        ?>
        <script async src="https://www.googletagmanager.com/gtag/js?id=AW-806400000"></script>
        <script>
            window.dataLayer = window.dataLayer || [];
            function gtag(){dataLayer.push(arguments);}
            gtag('js', new Date());
    
            gtag('config', 'AW-806400000"');
            gtag('event', 'conversion', {
                  'send_to': 'AW-806400000"/iHbjCOSfAewkasdowew',
                  'value': <?php echo $order_total; ?>,
                  'currency': 'USD',
                  'transaction_id': '<?php echo $transaction_id; ?>'
              });
        </script>
        <?php
    }
    

    Code goes in function.php file of your active child theme (or active theme). Tested and works.

    This should work better as you get the transaction ID this time.


    Original answer to the original question that how to get to cart total for this Adwords script…

    To display the total cart amount you will use:

    <?php echo number_format( WC()->cart->total + WC()->cart->total_tax, 2 ); ?>
    

    Targeting checkout page, you can try the following hooked function, that will add your script in the <head> section with the correct total cart amount:

    add_action('wp_head','google_tag_manager_order_received_conversion_script' );
    function google_tag_manager_order_received_conversion_script() {
        // Only on checkout page
        if( ! ( is_checkout() && ! is_wc_endpoint_url() ) ) return;
        ?>
        <script async src="https://www.googletagmanager.com/gtag/js?id=AW-806400000"></script>
        <script>
            window.dataLayer = window.dataLayer || [];
            function gtag(){dataLayer.push(arguments);}
            gtag('js', new Date());
    
            gtag('config', 'AW-806400000"');
            gtag('event', 'conversion', {
                  'send_to': 'AW-806400000"/iHbjCOSfAewkasdowew',
                  'value': <?php echo number_format( WC()->cart->total + WC()->cart->total_tax, 2 ); ?>,
                  'currency': 'USD',
                  'transaction_id': ''
              });
        </script>
        <?php
    }
    

    Code goes in function.php file of your active child theme (or active theme). Tested and works.

    But it seems strange as there is not yet any transaction ID to set in it…

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站