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