在 WooCommerce 电子邮件模板中获取产品名称和描述

Get Product Name and Description in WooCommerce email templates

我正在尝试在 WooCommerce 电子邮件模板中发送电子邮件时获取产品描述和产品名称。

我可以使用此代码

获取产品 ID $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 对象和订单 ID 作为 $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
}