Интеграция с Google Analytics для пользовательской страницы с заказом в Woocommerce 3 - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть пользовательская страница благодарности за то, что после завершения оформления заказа в WooCommerce мне нужно вставить данные заказа в тег отслеживания электронной торговли Google, чтобы записать продажу в аналитике. Одна часть этого добавляет следующее для каждого элемента в заказе ...

ga('ecommerce:addItem', {
  'id': <?php echo $order_id?>,    // Transaction ID. Required.
  'name': 'ACME Product',          // Product name. Required.
  'sku': '1234',                   // SKU/code.
  'category': 'Product Category',  // Category or variation.
  'price': '10.00',                // Unit price.
  'quantity': '1'                  // Quantity.
});

, но с вставкой реальных данных позиции заказа с использованием PHP, а не местозаполнителей, которые вы видите там для имени, артикула, категории, цены и количества.

В поиске ответов я вижу, что теперь я должен использовать
wc_display_item_meta ( $item ); вместо устаревших $item_meta = new WC_Order_Item_Meta( $item['item_meta'], $_product );

В чем я нуждаюсь, потому что я еще не полностью знаю PHP и, похоже, не могу найти каких-либо близких примеров, как мне начать получать значения? Это какой-то foreach, или есть способ напрямую анализировать отдельные свойства каждого элемента из элемента заказа в переменную, которую я затем могу вставить в эти заполнители?

1 Ответ

0 голосов
/ 05 сентября 2018

Попробуйте следующее (возможно, вам придется внести некоторые изменения и добавить идентификатор принадлежности) :

?>
<script>
ga('require', 'ecommerce');
<?php

// GET the WC_Order object instance from, the Order ID
$order = wc_get_order( $order_id );

$order_key = $order->get_order_key();

$transaction_id = $order->get_transaction_id(); // Doesn't always exist

$transaction_id = $order_id; // (Or the order key or the transaction ID if it exist)

?>
ga('ecommerce:addTransaction', {
    'id':        '<?php echo $transaction_id; // To be checked ?>',
    'affiliation': '<?php echo 'UA-XXXXX-Y'; // replace by yours ?>',
    'revenue':   '<?php echo $order->get_total(); ?>',
    'shipping':      '<?php echo $order->get_shipping_total(); ?>',
    'tax':       '<?php echo $order->get_total_tax(); ?>',
    'currency':      '<?php echo get_woocommerce_currency(); // Optional ?>' 
}); <?php

// LOOP START: Iterate through order items
foreach( $order->get_items() as $item_id => $item ) :
    // Get an instance of the WC_Product object
    $product = $item->get_product();

    // Get the product categories for the product
    $categories = wp_get_post_terms( $item->get_product_id(), 'product_cat', array( 'fields' => 'names' ) );
    $category = reset($categories); // Keep only the first product category
?>
ga('ecommerce:addItem', {
    'id':     '<?php echo $transaction_id; ?>',
    'name':       '<?php echo $item->get_name(); ?>',
    'sku':    '<?php echo $product->get_sku(); ?>',
    'category': '<?php echo $category; ?>',
    'price':      '<?php echo wc_get_price_excluding_tax($product);  // OR wc_get_price_including_tax($product) ?>',
    'quantity': '<?php echo $item->get_quantity(); ?>',
    'currency': '<?php echo get_woocommerce_currency(); // Optional ?>' 
});
<?php
endforeach; // LOOP END
?>
ga('ecommerce:send');
</script>
<?php

Этот код частично протестирован и не выдает ошибок ... Но его нужно протестировать по-настоящему. Я надеюсь, что это сработает.

Связанный:

...