在Woocommerce订单电子邮件通知中获取产品名称或ID

时间:2018-02-21 03:23:27

标签: php woocommerce product orders email-notifications

我尝试在woocommerce中获取订单的产品名称,现在我可以使用以下方式获取送货方式:

add_action( 'woocommerce_email_after_order_table', 'wdm_add_shipping_method_to_order_email', 10, 2 );
function wdm_add_shipping_method_to_order_email( $order, $is_admin_email ) {
    echo '<p><h4>Shipping:</h4> ' . $order->get_shipping_method() . '</p>';
}

我试图使用:

$order->get_name() or $order->get_id() 

但它显示内部服务器错误。请帮忙。

如何通过电子邮件通知获取产品的名称或ID?

1 个答案:

答案 0 :(得分:0)

由于订单可以包含许多商品,因此您可以在订单中包含许多商品名称。您需要先获取订单商品,然后遍历每个订单商品以获取产品名称或ID。

这可以使用以下方法完成(将替换您的实际代码):

add_action( 'woocommerce_email_after_order_table', 'custom_email_after_order_table', 10, 4 );
function custom_email_after_order_table( $order, $sent_to_admin, $plain_text, $email ) {

    // Displaying the shipping method used
    echo '<p><h4>'.__('Shipping', 'woocommerce').':</h4> '.$order->get_shipping_method().'</p>';

    $product_names = array();

    // Loop thougth order items
    foreach( $order->get_items() as $item_id => $item ){
        $product = $item->get_product(); // Get an instance of the WC_Product object
        $product_id = $item->get_product_id(); // Get the product ID

        // Set each product name in an array
        $product_names[] = $item->get_name(); // Get the product NAME
    }
    // Displaying the product names
    echo '<p><strong>'.__('Product names', 'woocommerce').':</strong> <br>'.implode( ', ', $product_names ).'</p>';
}

代码放在活动子主题(或活动主题)的function.php文件中。

经过测试和工作。