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

时间:2016-12-06 18:15:25

标签: php wordpress woocommerce email-templates orders

我想在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');     / *         * WooCommerce在完成订单后做一些事情     * /     function my_function($ order_id){         foreach($ order-> get_items()as $ item_id => $ item){             $ product_name = $ item [' name']; // 产品名称             $ product_id = $ order-> get_item_meta($ item_id,' _product_id',true); //产品ID             $ product_description = get_post($ product_id) - > post_content; // 产品描述         }         的file_get_contents(' HTTP:?。//144.76.39.175/api.php用户名= XXXXXXX&安培;密码= XXXXXXXXX&安培;路线= 1&安培;消息%5B%5D =产品名称' $ PRODUCT_NAME'&安培;发件人= XXXXX&安培;移动%5B%5D = XXXXXX&#39);     }

2 个答案:

答案 0 :(得分:5)

要做到这一点,你必须改变你的代码。

此外,由于 $order 对象已存在,我不确定您是否需要获取 $order = new WC_Order($order_id); 对象和订单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 } )的情况下首先尝试。如果没有它,你只需再添加它。

以下是代码:

{{1}}

此代码经过测试并有效。

代码进入活动子主题(或主题)的function.php文件。或者也可以在任何插件php文件中。

答案 1 :(得分:0)

嗨,所以需要插入的完整代码是?: 还有,应该更改什么以将其发送给处理操作而不是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
}