Добавить событие отслеживания Facebook на страницу «Заказ получен» в Woocommerce - PullRequest
0 голосов
/ 09 октября 2018

Я хочу добавить событие отслеживания Facebook, которое включает сумму покупки и валюту, на страницу подтверждения покупки WooCommerce, не прибегая к плагину.

Я предполагал, что что-то вроде следующего сделает работу вФайл functions.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 голосов
/ 09 октября 2018

В вашем коде много ошибок и ошибок.

  • Переменная $order не определена
  • Вам необходимо добавить отсутствующий аргумент $order_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 вашей активной дочерней темы (или активной темы). Протестировано и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...