代码之家  ›  专栏  ›  技术社区  ›  Joey Wang

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

  •  1
  • Joey Wang  · 技术社区  · 6 年前

    我尝试在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 回复  |  直到 6 年前
        1
  •  1
  •   LoicTheAztec    6 年前

    因为一个订单可以有许多项目,所以一个订单中可以有许多产品名称。您需要首先获取订单项目,然后循环遍历每个项目以获取产品名称或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>';
    }
    

    代码进入功能。活动子主题(或活动主题)的php文件。

    已测试并正常工作。