問題描述
我正在嘗試在 Woocommerce 感謝頁面中集成跟蹤代碼.我只找到了要填寫的訂單 ID.但我不知道如何為訂單商品數據完成此操作.
I am trying to integrate a tracking code in Woocommerce Thankyou page. I found just the order id to fill it out. But I don't know how to complete this for order items data.
這是我的實際代碼:
<script type="text/javascript">
ADMITAD = window.ADMITAD || {};
ADMITAD.Invoice = ADMITAD.Invoice || {};
ADMITAD.Invoice.broker = "adm"; // deduplication parameter (for Admitad by default)
ADMITAD.Invoice.category = "1"; // action code (defined during integration)
var orderedItem = []; // temporary array for product items
// repeat for every product item in the cart
orderedItem.push({
Product: {
productID: 'product_id', // internal product ID (not more than 100 characters, the same as in your product feed)
category: '1', // tariff code (defined during integration)
price: 'price', // product price
priceCurrency: "RON", // currency code in the ISO-4217 alfa-3 format
},
orderQuantity: '{{quantity}}', // product quantity
additionalType: "sale" // always sale
});
ADMITAD.Invoice.referencesOrder = ADMITAD.Invoice.referencesOrder || [];
// adding items to the order
ADMITAD.Invoice.referencesOrder.push({
orderNumber: "<?php echo $order->get_id(); ?>;", // internal order ID (not more than 100 characters)
orderedItem: orderedItem
});
// Important! If order data is loaded via AJAX, uncomment this string.
// ADMITAD.Tracking.processPositions();
</script>
感謝任何幫助.
推薦答案
以下重新訪問的代碼添加了正確的訂單項循環并使用了Order received"頁面(Thankyou)專用的動作鉤子:>
The following revisited code adds the correct order items loop and uses "Order received" page (Thankyou) dedicated action hook:
add_action( 'woocommerce_thankyou', 'js_tracking_thank_you_page', 90, 1 );
function js_tracking_thank_you_page( $order_id ) {
// Get the WC_Order instance Object
$order = wc_get_order( $order_id );
// Output
?>
<script type="text/javascript">
ADMITAD = window.ADMITAD || {};
ADMITAD.Invoice = ADMITAD.Invoice || {};
// deduplication parameter (for Admitad by default)
ADMITAD.Invoice.broker = "adm";
// action code (defined during integration)
ADMITAD.Invoice.category = "1";
// temporary array for product items
var orderedItem = [];
<?php
// Loop through Order items
foreach( $order->get_items() as $item ) :
$product = $item->get_product();
?>
orderedItem.push({
Product: {
// internal product ID (not more than 100 characters, the same as in your product feed)
productID: '<?php echo $item->get_product_id(); ?>',
// tariff code (defined during integration)
category: '1',
// product price
price: '<?php echo $product->get_price(); ?>',
// currency code in the ISO-4217 alfa-3 format
priceCurrency: '<?php echo $order->get_currency(); ?>',
},
// product quantity
orderQuantity: '<?php echo $item->get_quantity(); ?>',
additionalType: "sale" // always sale
});
<?php endforeach; // End of Loop ?>
// adding items to the order
ADMITAD.Invoice.referencesOrder = ADMITAD.Invoice.referencesOrder || [];
ADMITAD.Invoice.referencesOrder.push({
// internal order ID (not more than 100 characters)
orderNumber: "<?php echo $order->get_id(); ?>;",
orderedItem: orderedItem
});
// Important! If order data is loaded via AJAX, uncomment this string.
// ADMITAD.Tracking.processPositions();
</script>
<?php
}
它應該可以(已測試).
相關:
- 如何獲取 WooCommerce 訂單詳情
- 獲取訂單商品和 Woocommerce 3 中的 WC_Order_Item_Product
添加 - 實時貨幣換算
1) 安裝并激活這個免費插件:Euro FxRef Currency Converter
1) Install and active this free plugin: Euro FxRef Currency Converter
2) 啟用從RON"到EUR"的自動貨幣轉換(產品價格示例).
2) Enable auto currency conversion from 'RON' to 'EUR' (product price example).
替換:
// product price
price: '<?php echo $product->get_price(); ?>',
通過以下:
// Converted product price (rounded with 2 decimals)
<?php $price = EuroFxRef::convert( $product->get_price(), 'RON', 'EUR' ); ?>
price: '<?php echo round( $price, 2 ); ?>',
經過測試并有效……這應該可以解決問題.
Tested and works… This should do the trick.
這篇關于在 Woocommerce 的訂單接收頁面上的 JS 跟蹤代碼中訂購商品的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!