javascript数组显示数组的名称而不是内容gtag,购买事件

如何解决javascript数组显示数组的名称而不是内容gtag,购买事件

我正在尝试在 gtag purchase 页面的 Woocommerce Eshop 中创建 Thank you 事件代码。

但是当我在浏览器中看到 source 中的代码时,它显示的是数组的名称而不是内容。

我可以看到 google dashboard 中的购买情况,但没有跟踪这些项目。

我只能看到购买的总价。

这是我的代码:

if( is_wc_endpoint_url( 'order-received' ) ){
        $order_id = absint( get_query_var('order-received') );
        $order = wc_get_order( $order_id );
        $order_items = $order->get_items();
        $items_data  = []; // Initializing
        foreach ( $order_items as $item_id => $item ) {
            $variation_id = $item->get_variation_id();
            $product_id   = $variation_id > 0 ? $variation_id : $item->get_product_id();

            //get the categories tree
            foreach( wp_get_post_terms( $product_id,'product_cat' ) as $term ){
                if( $term ){
                    $categories .= $term->name;
                    $categories .= '/';
                }
            }
            $categories = trim($categories,'/');
            $product = wc_get_product( $product_id );
            // Set specific data for each item in the array
            array_push($items_data,array(
                item_id          => $product->get_sku(),item_name        => $product->get_name(),item_category    => $categories,quantity   => $item->get_quantity(),price      => $item->get_subtotal(),));
            $categories = '';
        }
    ?>
    <script>
        var items_data = <?=json_encode($items_data)?>;
        var my_items = [];
        
        for(var i=0; i<items_data.length; i++){ 
            var item = items_data[i]; console.log(item);
            my_items.push({
                    item_id:item.item_id,item_name:item.item_name,item_category:item.item_category,quantity:item.quantity,price:item.price
            });         
        }       
    </script>

<!-- Event snippet for Website sale conversion page -->
        <script> gtag('event','conversion',{ 'send_to': 'AC-898s89ds/PNdsds78dsy_ds82B','value': '<?php echo $order->get_total(); ?>','currency': 'EUR','transaction_id': '<?php echo $order_id; ?>' }); </script> 
    <script>        
        console.log({items:my_items}); //this displays correctly the content of the array       
        
gtag('event','purchase',{ 'transaction_id': '<?php echo $order_id; ?>','affiliation': 'eartshop.gr','shipping': '<?php echo $order->get_shipping_total(); ?>','tax' : '<?php echo $order->get_total_tax();  ?>','items': my_items });
</script>

这就是我在 Thank you page 的源代码中看到的:

gtag('event',{ 'transaction_id': '10707','affiliation': 'eshopdomain.com','value': '152.00','shipping': '0.00','tax' : '29.03','items': my_items });

解决方法

您的功能可以优化。使用 woocommerce_payment_completewoocommerce_thankyou 挂钩确保每次订单成功时都会触发该事件。

付款需要 woocommerce_payment_complete 钩子,例如 作为 PayPal 或信用卡(条纹或其他)。客户并不总是 等待站点上的重定向,因此事件可能不会 仅用 woocommerce_thankyou 挂钩激活。

// adds the Google Analytics "purchase" event to the thankyou page
add_action( 'woocommerce_payment_complete','set_google_tag_transaction_conversion_event' );
add_action( 'woocommerce_thankyou','set_google_tag_transaction_conversion_event',99,1 );
function set_google_tag_transaction_conversion_event( $order_id ) {

    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );

?>

    <!-- Event snippet for Website sale conversion page -->
    <script> gtag('event','conversion',{
        'send_to': 'AC-898s89ds/PNdsds78dsy_ds82B','value': '<?php echo $order->get_total(); ?>','currency': 'EUR','transaction_id': '<?php echo $order_id; ?>'
        });
    </script> 
    <!-- Google Tag: Transaction conversion event -->
    <script>
    gtag('event','purchase',{
        "transaction_id": "<?php echo $order_id; ?>","affiliation": "eartshop.gr","value": <?php echo $order->get_total(); ?>,"currency": "EUR","tax": <?php echo $order->get_total_tax(); ?>,"shipping": <?php echo $order->get_shipping_total(); ?>,"items": [
        <?php foreach( $order->get_items() as $item_id => $item_product ) {

            $product = $item_product->get_product();

            $quantity = $item_product->get_quantity();
            $subtotal_line = $item_product->get_subtotal();
            $price = $subtotal_line / $quantity;
            $product_name = $product->get_name();
            $name = str_replace( ',','',$product_name );

            $categories = array();
            //get the categories tree
            foreach( wp_get_post_terms( $product->get_id(),'product_cat' ) as $term ){
                if ( $term ) {
                    $categories[] = $term->name;
                }
            }

            if ( ! empty($categories) ) {
                $product_categories = implode( '/',$categories );
            } else {
                $product_categories = '';
            }

            ?>
            {
                "id": "<?php echo $product->get_sku(); ?>","name": "<?php echo $name; ?>","category": "<?php echo $product_categories; ?>","quantity": <?php echo $quantity; ?>,"price": "<?php echo $price; ?>",},<?php
        } // end foreach order items
        ?>
      ]
    });

    </script>

<?php

}

代码已经过测试并且可以工作。将它添加到您的活动主题的functions.php。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res