我尝试在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?
答案 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文件中。
经过测试和工作。