簡體   English   中英

WooCommerce插件PHP掛鈎上的空$ order變量

[英]Empty $order variable on WooCommerce plugin PHP hook

我在嘗試為WordPress的WooCommerce插件掛上鈎時遇到問題。 問題是我需要根據他們選擇的本地取件運送選項有條件地更改訂單的收件人電子郵件。 我的代碼正常工作了幾個月,但突然之間; 它停止工作了。 這是我的functions.php文件上的內容:

    add_filter( 'woocommerce_email_recipient_new_order', 'diff_recipients_email_notifications', 10, 2 );
function diff_recipients_email_notifications( $recipient, $order ) {

    $shippingOptionOne = 'email@example.com';
    $shippingOptionTwo = 'email2@example.com';
    $shippingOptionThree = 'email3@example.com';

    $order_shipping = $order->get_items('shipping');
    $key = key($order_shipping);
    $shipping_method_id = $order_shipping[$key]['item_meta']['method_id'][0];

    if($shipping_method_id == 'local_pickup:6' )
    {
        $recipient = $shippingOptionOne;
    }
    elseif($shipping_method_id == 'local_pickup:4'){
        $recipient = $shippingOptionTwo;
    }
    elseif($shipping_method_id == 'local_pickup:7'){
        $recipient = $shippingOptionThree;
    }
    return $recipient;
}

我進行了一些測試和研究,經過一點調試之后,我得出的結論是,作為函數第二個參數的變量$ order正在打印一個空值,因此我無法獲取$ order_shipping = $ order-> get_items('shipping'); ($ order打印一個空白)。

提前致謝。

PS:這是我用來編寫代碼的鏈接: WooCommerce電子郵件通知:不同城市的不同電子郵件收件人

我和我的團隊花了一些時間進行調試,然后我們找到了解決方案。 由於某種原因,var_dump並未打印訂單,但它在那里,我們只是更改了這一行:

$order_shipping = $order->get_items('shipping');
    $key = key($order_shipping);
    $shipping_method_id = $order_shipping[$key]['item_meta']['method_id'][0];

並將其替換為此:

$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
    $chosen_shipping = $chosen_methods[0];

當然我們也改變了

$shipping_method_id

有:

$chosen_shipping

而且它是一種魅力!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM