【问题标题】:Empty $order variable on WooCommerce plugin PHP hookWooCommerce 插件 PHP 挂钩上的空 $order 变量
【发布时间】:2017-10-23 19:27:44
【问题描述】:

我在尝试挂​​钩 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 正在打印一个空值,所以我可以' t 得到 $order_shipping = $order->get_items('shipping'); ($order 正在打印一个空白区域)。

提前致谢。

P.S:这是我最初用来编写代码的链接:WooCommerce email notifications: different email recipient for different cities

【问题讨论】:

    标签: php wordpress woocommerce hook-woocommerce


    【解决方案1】:

    我和我的团队花了一些时间进行调试,最终找到了解决方案。 出于某种原因,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
    

    它就像一个魅力!

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 2016-03-14
      • 2019-04-14
      • 2021-04-28
      • 1970-01-01
      • 2016-11-27
      • 2014-10-19
      • 2020-08-17
      • 1970-01-01
      相关资源
      最近更新 更多