#php #wordpress #woocommerce
#php #wordpress #woocommerce
Вопрос:
Я добавляю код уровня данных в header.php файл для отправки данных транзакции в Google Analytics. Когда я добавляю приведенный ниже код в файл заголовка, я получаю эту ошибку:
Неустранимая ошибка: неперехваченная ошибка: вызов функции-члена get_order_number() в строке в /home/site/public_html/XXX.com/wp-content/themes/nature/header.php:52
<!-- Transaction Data Layer -->
<?php if (is_order_received_page()): ?>
$order = wc_get_order( $order_id );
$products = $order->get_items();
?>
<script>
dataLayer.push({
'ecommerce': {
'currencyCode': 'US',
'purchase': {
'actionField':{
'id': '<?php echo $order->get_order_number(); ?>',
'affiliation': 'GEW',
'revenue': <?php echo number_format($order->get_subtotal(), 2, ".", ""); ?>,
'tax': <?php echo number_format($order->get_total_tax(), 2, ".", ""); ?>,
'shipping': <?php echo number_format($order->calculate_shipping(), 2, ".", ""); ?>,
<?php if($order->get_used_coupons()): ?>
'coupon': '<?php echo implode("-", $order->get_used_coupons()); ?>'
<?php endif; ?>
},
'products': [
<?php
foreach($order->get_items() as $key => $item):
$product = $order->get_product_from_item( $item );
$variant_name = ($item['variation_id']) ? wc_get_product($item['variation_id']) : '';
?>
{
'name': '<?php echo $item['name']; ?>',
'id': '<?php echo $item['product_id']; ?>',
'price': '<?php echo number_format($order->get_line_subtotal($item), 2, ".", ""); ?>',
'brand': 'N',
'category': '<?php echo strip_tags($product->get_categories(', ', '', '')); ?>',
'variant': '<?php echo ($variant_name) ? implode("-", $variant_name->get_variation_attributes()) : ''; ?>',
'quantity': <?php echo $item['qty']; ?>
},
<?php endforeach; ?>
]
}
}
});
</script>
Комментарии:
1. как я предполагаю, на странице благодарности больше нет информации о транзакции, поскольку это отдельная страница / вызов. вам нужно будет передать это. однако это кажется крайне неэтичным.
2. Это связано не с вашим кодом, а с плагином authnet-cim-for-woo…
3. Я обновил код и ошибку. Я вставил неправильную ошибку и код.