代码之家  ›  专栏  ›  技术社区  ›  Dan382

将Facebook跟踪事件附加到Woocommerce中的订单接收页面

  •  1
  • Dan382  · 技术社区  · 6 年前

    我想添加一个Facebook跟踪事件,其中包括购买金额和;货币到WooCommerce购买确认页面,无需借助插件。

    <?php
    /**
     * Append Facebook tracking Event
     */
    add_action( 'woocommerce_thankyou', 'facebook_tracking_thank_you_page' );
    
    function facebook_tracking_thank_you_page() {
        $currency = $order->get_order_currency();
        $total = $order->get_total();
    echo ("<script>fbq('track', 'Purchase', {value: '<?php echo $total ?>',currency: '<?php echo $currency?>'});</script>");
    }
    ?>
    

    然而,这个脚本在确认页面上根本没有回应。它还会破坏页面的布局。

    我现在已经尝试将echo语句添加到全局标头(包装在针对该特定页的if语句中):

    <!-- Echo Facebook Tracking on Checkout -->
    <?php
        global $post;
        if($post->post_type == 'page' && $post->ID == '3327'){
            echo "<script>fbq('track', 'Purchase', {value: '<?php echo $total ?>',currency: '<?php echo $currency?>'});</script>";
        }
    ?>
    

    将其保存在functions.php文件中时:

    /**
     * Append Facebook tracking Event
     */
    
    add_action( 'woocommerce_thankyou', 'facebook_tracking_thank_you_page' );
    
    function facebook_tracking_thank_you_page() {
        $currency = $order->get_order_currency();
        $total = $order->get_total();
    }
    

    但是,我在页面上看到的输出是:

    <script>fbq('track', 'Purchase', {value: '<?php echo  ?>',currency: '<?php echo ?>'});</script>
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   LoicTheAztec    6 年前

    • 这个 $order
    • 您需要添加缺少的参数 $order_id
    • 你需要得到 WC_Order 订单ID
    • WC\ U订单 get_order_currency() 已弃用并替换为 get_currency()

    请尝试以下操作:

    add_action( 'woocommerce_thankyou', 'facebook_tracking_thank_you_page', 90, 1 );
    function facebook_tracking_thank_you_page( $order_id ) {
        // Get the WC_Order instance Object
        $order = wc_get_order( $order_id );
    
        // Output
        echo "<!-- Facebook tracking event -->
        <script>fbq('track', 'Purchase', {value: '".$order->get_total()
        ."',currency: '".$order->get_currency()."'});</script>";
    }
    

    测试和工作。