I am trying to pull line item data from the order and implode it in a specific format. It's only retrieving the details of the last item in the order right now. I need a pipe separator between each individual set of item details.
I appreciate any help.
function wg_tracking( $order_id ) {
$order = wc_get_order( $order_id );
$shipping_total = $order->get_shipping_total();
$order_total = $order->get_total();
$currency = $order->get_currency();
$coupons = $order->get_coupon_codes();
$items = $order->get_items();
$total_exc_shipping = $order_total - $shipping_total;
$order_discount = $order->get_discount_total();
foreach( $coupons as $coupon ){
$coupon_post_object = get_page_by_title($coupon, OBJECT, 'shop_coupon');
$coupon_id = $coupon_post_object->ID;
$coupon = new WC_Coupon($coupon_id);
}
$wgItems = array();
foreach ( $items as $item ) {
$wgProduct = '';
$wgProduct .= '777777';
$wgProduct .= '::' . $order->get_line_total( $item, true, true );
$wgProduct .= '::' . $item->get_name();
$wgProduct .= '::' . $item->get_id();
}
$wgItems[] = $wgProduct;
$wgItemsList = implode('|', $wgItems); //this is where the problem is, I think
?>
<script>
items: '<?php echo $wgItemsList ?>', //this is where i want to call the items in a string
</script>
There are some mistakes and complications in your code, try the following instead (commented):
function wg_tracking( $order_id ) {
$order = wc_get_order( $order_id );
$shipping_total = $order->get_shipping_total();
$order_total = $order->get_total();
$currency = $order->get_currency();
$coupons = $order->get_coupons(); // Get an array of WC_Coupon objects
// Loop through the array of WC_Coupon Objects
foreach( $coupons as $coupon ){
// Do something with $coupon variable (WC_Coupon object)
$coupon_code = $coupon->get_code(); // Get coupon code
}
$total_exc_shipping = $order_total - $shipping_total;
$order_discount = $order->get_discount_total();
$wgItems = array(); // Initializing
// Loop through order "line items"
foreach ( $order->get_items() as $item ) {
$wgProduct = ''; // Initializing
$wgProduct .= '777777';
$wgProduct .= '::' . $order->get_line_total( $item, true, true );
$wgProduct .= '::' . $item->get_name();
$wgProduct .= '::' . $item->get_id(); // <== That is the item Id which has nothing to do with the product id: $item->get_product_id();
$wgItems[] = $wgProduct; // <== Moved inside the foreach loop
}
$wgItemsList = implode('|', $wgItems); // Now this works
?>
<script>
var items = '<?php echo $wgItemsList ?>'; //this is where i want to call the items in a string
</script>
}
Now it will work.
Note: to get the product id from an order item useget_product_id()
, but notget_id()
which gives theitem_id
as recorded on the related database tables.
Related:
Have you tried the following? Assign the stored values to $wgItems array inside the loop. This should fix it on a quick look
foreach ( $items as $item ) {
$wgProduct = '';
$wgProduct .= '777777';
$wgProduct .= '::' . $order->get_line_total( $item, true, true );
$wgProduct .= '::' . $item->get_name();
$wgProduct .= '::' . $item->get_id();
$wgItems[] = $wgProduct;
}
$wgItemsList = implode('|', $wgItems); //this is where the problem is, I think
?>
Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.
Find the answer in similar questions on our website.
Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.
PHP (from the English Hypertext Preprocessor - hypertext preprocessor) is a scripting programming language for developing web applications. Supported by most hosting providers, it is one of the most popular tools for creating dynamic websites.
The PHP scripting language has gained wide popularity due to its processing speed, simplicity, cross-platform, functionality and distribution of source codes under its own license.
https://www.php.net/
Welcome to the Q&A site for web developers. Here you can ask a question about the problem you are facing and get answers from other experts. We have created a user-friendly interface so that you can quickly and free of charge ask a question about a web programming problem. We also invite other experts to join our community and help other members who ask questions. In addition, you can use our search for questions with a solution.
Ask about the real problem you are facing. Describe in detail what you are doing and what you want to achieve.
Our goal is to create a strong community in which everyone will support each other. If you find a question and know the answer to it, help others with your knowledge.