wordpress woocommerce_new_order触发的函数中的详细订单问题

iezvtpos  于 2023-02-15  发布在  WordPress
关注(0)|答案(1)|浏览(153)

我希望在一个新的订单已经创建,电子邮件也发送了订单中的每个产品,每个地址保存在一个特定产品的acf字段。
在邮件中,我想有在表中看到的经典wordpress订单摘要邮件项目的细节。
我试过:

add_action( 'woocommerce_new_order', 'create_invoice_for_wc_order',  1, 2  );

function create_invoice_for_wc_order( $order_id, $order ) {
    
    $oggetto = '';
    $corpo = '';
    $emailDaChi = $order->get_billing_email();

    foreach ( $order->get_items() as $item_id => $item ) {
        
        $emailAChi = get_field('email_gestore', $product_id); //email del gestore
        
        if ($emailAChi != '' && $emailAChi != null) {
            $product_id = $item->get_product_id();
            $variation_id = $item->get_variation_id();
            $product = $item->get_product(); // see link above to get $product info
            $product_name = $item->get_name();
            $quantity = $item->get_quantity();
            $subtotal = $item->get_subtotal();
            $total = $item->get_total();
            $tax = $item->get_subtotal_tax();
            $tax_class = $item->get_tax_class();
            $tax_status = $item->get_tax_status();
            $allmeta = $item->get_meta_data();
            $somemeta = $item->get_meta( '_whatever', true );
            $item_type = $item->get_type(); // e.g. "line_item", "fee"
            $dettaglio = wc_display_item_meta($item, array(
                    'echo' => false,
            ));
            $corpo = '
            <div> 
                <h3>
                     Riepilogo NUOVA PRENOTAZIONE:
               </h3>
               <p>

                DETTAGLI ORDINE:
                <br>'
                .$product_name.'
                <br>
                QUANTITA: '.$quantity.'
                <br>
                SUBTOTALE: '.$subtotal.'
                <br>
                TOTALE: '.$total.'
                <br>
                DETTAGLI: '.$dettaglio.'
                <br>                                   
            </p>
        </div>';
                    
            $headers = array(
                'Content-Type: text/html; charset=UTF-8',
                'From: '.$emailDaChi,
            );
    
            $mail = wp_mail( $emailAChi, $oggetto, $corpo, $headers);
        }
        
    }
}

在邮件中的字符串"DETTAGLI:"我什么也没看见。
但是,如果我获取代码,重新调整它的用途以传递订单ID并回显邮件正文,则详细信息会正确地打印出来。
我该怎么做呢?
谢谢

5q4ezhmt

5q4ezhmt1#

你称之为:

$emailAChi = get_field('email_gestore', $product_id);

...但在该阶段尚未定义$product_id,因此不会触发电子邮件(wp_mail)。
另外,请确保$oggetto不是空的,并且您不需要这个:

$mail = wp_mail( $emailAChi, $oggetto, $corpo, $headers);

......这就够了:

wp_mail( $emailAChi, $oggetto, $corpo, $headers);

相关问题