Получить название продукта и описание в шаблонах электронной почты 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, что я пытаюсь сделать, это после того, как заказ установлен, я пытаюсь отправить смс пользователю, но когда я установил его как завершенный, это дает ошибку 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');}

5

Решение

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

Также я не уверен, что вам нужно получить $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.

5

Другие решения

Привет, так что полный код должен быть вставлен?
Кроме того, что следует изменить, чтобы отправить это для действия обработки вместо 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

По вопросам рекламы [email protected]