Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get Product Name and Description in WooCommerce email templates

I am trying to get product descripton and the product name when email is sent in WooCommerce email templates.

I am able to get product id $order_id = trim(str_replace('#', '', $order->get_items())); using this code

But when I am trying to get its description and product name I am not able to do the same.

My code:

$order = new WC_Order($order_id);

    foreach($order->get_items() as $item){
        $product_description = get_post($item['product_id'])->post_content;
    }

How can I make it work?

Thanks

I added this in function.php what i ma trying to do is after the order is set completed i am trying to send sms to the user but when i set it as completed it gives an 500 error

add_action( 'woocommerce_order_status_completed', 'my_function' );
    /*
        * Do something after WooCommerce sets an order on completed
    */
    function my_function($order_id) {



        foreach ($order->get_items() as $item_id => $item) {

            $product_name = $item['name']; // product name

            $product_id = $order->get_item_meta($item_id, '_product_id', true); // product ID

            $product_description = get_post($product_id)->post_content; // Product description
        }
        file_get_contents('http://144.76.39.175/api.php?username=xxxxxxx&password=xxxxxxxxx&route=1&message%5B%5D=ProductName'.$product_name.'&sender=xxxxx&mobile%5B%5D=xxxxxx');



    }
like image 420
Shaik Avatar asked Dec 06 '16 18:12

Shaik


1 Answers

To do that you have to change a little bit your code.

Also I am not sure that you need to get the $order object and the order ID as the $order object already exist.

So you could try first without $order = new WC_Order($order_id); (or $order = wc_get_order( $order_id );) at the beginning of the code. If it doesn't work without, you will just add it again.

Here is the code:

$order = wc_get_order( $order_id ); // optional (to test without it)

foreach ($order->get_items() as $item_id => $item) {

    $product_name = $item['name']; // product name

    $product_id = $order->get_item_meta($item_id, '_product_id', true); // product ID

    $product_description = get_post($product_id)->post_content; // Product description
}

This code is tested and works.

Code goes in function.php file of your active child theme (or theme). Or also in any plugin php files.

like image 67
LoicTheAztec Avatar answered Oct 27 '22 12:10

LoicTheAztec