基于条件电子邮件收件人的发货方法

时间:2017-03-21 作者:CodingNub

基本上,我试图让我的函数根据发货方式(即本地取货选项#1和#2)有条件地更改新订单收件人

问题是我的功能是我的if陈述它将始终转到else

function conditional_email_recipient( $order, $recipient ) {


    $page = $_GET[\'page\'] = isset( $_GET[\'page\'] ) ? $_GET[\'page\'] : \'\';
    if ( \'wc-settings\' === $page ) {
        return $recipient; 
    }


    if ( \'local_pickup:1\' == $order->get_shipping_method ) {
      $recipient = \'[email protected]\';




    } else {
      $recipient = \'[email protected]\';


    }

    return $recipient;

}

add_filter( \'woocommerce_email_recipient_new_order\', \'conditional_email_recipient\', 10, 2 );
我试着改变local_pickup:1 其他可能的运输方式名称,但运气不好。

有什么想法吗?

谢谢

====================================================

Here\'s my final working code

这有点马虎,但它的工作完全符合预期。

add_filter( \'woocommerce_email_recipient_new_order\', \'conditional_email_recipient\', 10, 2 );

function conditional_email_recipient( $recipient ) {

    $methodTest = wc_get_order();

     $shipping_method_id = $methodTest->get_items(\'shipping\');

    foreach($shipping_method_id as $el){
        $order_shipping_method = $el[\'method_id\'];

    if ( \'local_pickup:1\' == $order_shipping_method ) {
      $recipient = \'[email protected]\';


    } else {
      $recipient = "[email protected]";


    }


    }

    return $recipient;

}

1 个回复
最合适的回答,由SO网友:Aniruddha Gawade 整理而成

首先,get_shipping_method 是一个函数。您似乎将其用作变量。

其次$order->get_shipping_method() 返回发货方法标签,您正试图将其与id进行比较。

现在,您可以比较标题,也可以使用

$order->get_items( \'shipping\' );
返回一个数组name, type, method_id, costtaxes, 和使用method_id 用于比较。

相关推荐

如何挂接自定义折扣以更改WooCommerce上的WC_ORDER总价?

我正在编写WooCommerce上的WordPress插件。这个插件基本上允许WooCommerce分配store credits 无论何时登录的客户下了标记为Completed 付款后。然后,这些门店积分可用于抵消客户未来订单的成本。例如,如果我购买价值10美元的商品,我可能会得到1美元的商店积分。我可以使用任何金额的店铺积分来抵消未来的购买,例如,我可以选择使用0.50美元的积分来抵消下一个订单的0.50美元。我在WP Admin中找到用于分配客户商店积分的挂钩没有问题,但我在前端添加挂钩以允许客户在