将Facebook跟踪事件追加到Woocommerce中的“收到订单”页面上

时间:2018-10-09 09:22:14

标签: javascript php wordpress facebook woocommerce

我希望在不借助插件的情况下,将包含购买金额和货币的Facebook跟踪事件添加到WooCommerce购买确认页面。

我假设在function.php文件中可以执行以下操作:

<?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语句中):

Header.php

<!-- 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 个答案:

答案 0 :(得分:1)

您的代码中有很多错误和错误。

  • 未定义$order变量
  • 您需要在钩子函数中添加缺少的参数$order_id
  • 您需要从订单ID
  • 获取WC_Order对象的实例
  • 不推荐使用WC_Order方法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>";
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试并可以正常工作。