Получите название и описание продукта в шаблонах электронной почты WooCommerce


Я пытаюсь получить описание продукта и название продукта при отправке электронной почты в шаблонах электронной почты WooCommerce.

Я могу получить идентификатор продукта $order_id = trim(str_replace('#', '', $order->get_items()));, используя этот код

Но когда я пытаюсь получить его описание и название продукта, я не могу сделать то же самое.

Мой код:

$order = new WC_Order($order_id);

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

Как я могу заставить это работать?

Спасибо

Я добавил это в function.php что я пытаюсь сделать, так это после того, как заказ будет выполнен, я пытаюсь отправить sms на пользователь, но когда я устанавливаю его как завершенный, он выдает ошибку 500

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');



    }
Author: Shaik, 2016-12-06

2 answers

Для этого вам нужно немного изменить свой код.

Также я не уверен, что вам нужно получить $order объект и идентификатор заказа в качестве $order объект уже существует.

Так что вы могли бы попробовать сначала без $order = new WC_Order($order_id); ( или $order = wc_get_order( $order_id );) в начале кода. Если это не сработает без, вы просто добавите его снова.

Вот код:

$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
}

Этот код протестирован и работает.

Код входит в function.php файл вашей активной дочерней темы (или темы). Или также в любых файлах php плагинов.

 4
Author: LoicTheAztec, 2016-12-07 19:21:31

Привет, значит, полный код, который необходимо вставить, таков?: Также что следует изменить, чтобы отправить это для действия обработки вместо status_comleted?

add_action( 'woocommerce_order_status_completed', 'my_function' );

/*
 * Do something after WooCommerce sets an order on completed
 */

function my_function($order_id) 
{
    f$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
}
 0
Author: Angelo, 2018-10-03 11:55:45