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

Javascript 在Woocommerce中的Adword转换代码中添加订单数据,javascript,php,woocommerce,cart,google-ads-api,Javascript,Php,Woocommerce,Cart,Google Ads Api,我有一个adwords转换代码,我想添加到我的子主题中。我想在这段代码的“值”属性中插入总购买金额,以便每次触发该代码时,购物车中的总金额都会添加到转换中 <script async src="https://www.googletagmanager.com/gtag/js?id=AW-806400000"></script> <script> window.dataLayer = window.dataLayer ||

我有一个adwords转换代码,我想添加到我的子主题中。我想在这段代码的“值”属性中插入总购买金额,以便每次触发该代码时,购物车中的总金额都会添加到转换中

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

window.dataLayer=window.dataLayer | |[];
函数gtag(){dataLayer.push(参数);}
gtag('js',新日期());
gtag(“配置”、“AW-806400000”);
gtag(‘事件’、‘转换’{
“发送至”:“AW-806400000”/IHBJCOSFAEWKASDOWW”,
“值”:1.0,***[从购物车中获取总数并在此处使用]**
“货币”:美元,
“事务处理id”:”
});

更新

正如Reigel所建议的,在“订单接收”结束点(谢谢页面)应该更合适。在这里,我们的目标是订单总额(因为购物车对象不再存在)

因此,代码应该是:

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
}
add_action('wp_head','google_tag_manager_checkout_conversion_script');
函数google\u tag\u manager\u checkout\u conversion\u script(){
//仅在“订单已收到”页面上
如果(!is_wc_endpoint_url('order-received'))
return;//退出
全球$wp;
$order_id=absint($wp->query_vars['order-received']);
$order\U key=isset($\U GET['key'])?wc\U clean($\U GET['key']):“”;
if(空($order_id)|$order_id==0)
return;//退出
$order=wc\u get\u order($order\u id);
如果($order->get_order_key()!=$order_key)
return;//退出
//获取订单总金额和订单交易ID
$order_total=(浮动)$order->get_total();
$transaction_id=$order->get_transaction_id();
?>
window.dataLayer=window.dataLayer | |[];
函数gtag(){dataLayer.push(参数);}
gtag('js',新日期());
gtag(“配置”、“AW-806400000”);
gtag(‘事件’、‘转换’{
“发送至”:“AW-806400000”/IHBJCOSFAEWKASDOWW”,
“值”:,
“货币”:美元,
“事务处理id”:”
});
针对结帐页面,您可以尝试以下钩住的功能,该功能将使用正确的购物车总金额在
部分添加脚本:

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
}
add_action('wp_head'、'google_tag_manager_order_received_conversion_script');
函数google\u tag\u manager\u order\u received\u conversion\u script(){
//仅在结帐页面上
if(!(is_checkout()&&!is_wc_endpoint_url())返回;
?>
window.dataLayer=window.dataLayer | |[];
函数gtag(){dataLayer.push(参数);}
gtag('js',新日期());
gtag(“配置”、“AW-806400000”);
gtag(‘事件’、‘转换’{
“发送至”:“AW-806400000”/IHBJCOSFAEWKASDOWW”,
“值”:,
“货币”:美元,
“事务处理id”:”
});

更新

正如Reigel所建议的,在“订单接收”结束点(谢谢页面)应该更合适。这里我们以订单总数为目标(因为购物车对象不再存在)

因此,代码应该是:

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
}
add_action('wp_head','google_tag_manager_checkout_conversion_script');
函数google\u tag\u manager\u checkout\u conversion\u script(){
//仅在“订单已收到”页面上
如果(!is_wc_endpoint_url('order-received'))
return;//退出
全球$wp;
$order_id=absint($wp->query_vars['order-received']);
$order\U key=isset($\U GET['key'])?wc\U clean($\U GET['key']):“”;
if(空($order_id)|$order_id==0)
return;//退出
$order=wc\u get\u order($order\u id);
如果($order->get_order_key()!=$order_key)
return;//退出
//获取订单总金额和订单交易ID
$order_total=(浮动)$order->get_total();
$transaction_id=$order->get_transaction_id();
?>
window.dataLayer=window.dataLayer | |[];
函数gtag(){dataLayer.push(参数);}
gtag('js',新日期());
gtag(“配置”、“AW-806400000”);
gtag(‘事件’、‘转换’{
“发送至”:“AW-806400000”/IHBJCOSFAEWKASDOWW”,
“值”:,
“货币”:美元,
“事务处理id”:”
});
针对结帐页面,您可以尝试以下钩住的功能,该功能将使用正确的购物车总金额在
部分添加脚本:

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
}
add_action('wp_head'、'google_tag_manager_order_received_conversion_script');
函数google\u tag\u manager\u order\u received\u conversion\u script(){
//仅在结帐页面上
if(!(is_checkout()&&!is_wc_endpoint_url())返回;
?>
window.dataLayer=window.dataLayer | |[];
函数gtag(){dataLayer.push(参数);}
gtag('js',新日期());
gtag(“配置”、“AW-806400000”);
gtag(‘事件’、‘转换’{
“发送至”:“AW-806400000”/IHBJCOSFAEWKASDOWW”,
“值”:,
“货币”:美元,
“事务处理id”:”
});

我认为,这段代码最好放在“谢谢”页面。在成功结帐后。@Reigel是的,我知道,但OP要求购物车总计…在Thankyou中,没有更多的购物车对象,而是订单对象…是的,但我想OP只是与术语/单词“购物车”混淆了。哦,OP必须澄清这一点。@Reigel最后我添加了“订单已收到”选项…我会看看OP怎么说…这取决于他。非常感谢,很抱歉延迟回复。我同意,由于它的转换脚本,最好在“订单已收到”中使用“结束点。我还想说,现在每页都添加了相同的bcoz我的脚本。我会将问题标题更改为Order Total。我认为,最好将此代码放在“谢谢”页中。成功后