Reputation: 21
I am trying to add the items in the checkout for a woocommerce checkout call on the order confirmation page, but it's just outputting blank values for the items ordered.
Here's the code:
<!--Onefeed Tracking -->
<?php
$order = new WC_Order( $order_id );
$items = $order->get_items();
foreach ( $items as $item ) {
$product_id = $item['product_id'];
}
$items_ordered = implode(',', $items);
?>
<script type="text/javascript" language="javascript">
var of_ssid = 'xxxx';
var cs = '<?php echo $order->get_total(); ?>';
var oi = '<?php echo $order->get_order_number(); ?>';
var it = '<?php echo $order->get_item_count(); ?>';
var pr = '<?php echo $items_ordered(); ?>';
var nc = '';
</script>
<script type="text/javascript" language="javascript" src="https://tracking.onefeed.co.uk/t.js"></script>
<noscript>
<img border="0" src="https://tracking.onefeed.co.uk/ProcessProductCheckout.ashx?of_ssid=xxxx&cs=<?php echo $order->get_total(); ?>&it=<?php echo $order->get_item_count() ?>&oi=<?php echo $order->get_order_number(); ?>&nc=&pr =<?php echo $items_ordered(); ?>" />
</noscript>
<!--End Onefeed Tracking -->
Upvotes: 1
Views: 485
Reputation: 253978
We don't know what is the order item data that is needed in your script, and how it needs to be formatted…
Try the following:
add_action('woocommerce_thankyou', 'thankyou_tracking_onefeed_script', 20, 1 );
function thankyou_tracking_onefeed_script( $order_id ) {
if ( ! $order_id )
return;
// Get an instance of the WC_Product object
$order = wc_get_order( $order_id );
// Get Order total amount and Order transaction ID
$transaction_id = $order->get_transaction_id();
$order_items = array();
foreach ( $order->get_items() as $item_id => $item ) {
$product = $item->get_product();
$product_id = $item->get_product_id();
// Set unprotected item data in an array
$order_items[] = json_encode($item->get_data());
}
$order_items = implode( ',', $order_items );
?>
<script type="text/javascript" language="javascript" src="https://tracking.onefeed.co.uk/t.js"></script>
<script type="text/javascript" language="javascript">
var of_ssid = 'xxxx';
var cs = '<?php echo $order->get_total(); ?>';
var oi = '<?php echo $order_id; ?>';
var it = '<?php echo $order->get_item_count(); ?>';
var pr = '<?php echo $order_items; ?>';
var nc = '';
</script>
<noscript>
<img border="0" src="https://tracking.onefeed.co.uk/ProcessProductCheckout.ashx?of_ssid=xxxx&cs=<?php echo $order->get_total(); ?>&it=<?php echo $order->get_item_count() ?>&oi=<?php echo $order->get_order_number(); ?>&nc=&pr =<?php echo $order_items; ?>" />
</noscript>
<?php
echo '<p>BLABLA</p>';
}
Code goes in function.php file of your active child theme (or active theme). Tested and the code outputs order items data.
Useful thread: How to get WooCommerce order details
Upvotes: 1