Woocommerce新订单通知根据运输国家/地区的不同电子邮件

时间:2014-05-08 23:44:10

标签: php wordpress woocommerce

现在已经把头发拉了过几天。场景是1个商店有2个位置,因此根据结账时选择的送货国家/地区,新订单通知需要转到相关的电子邮件地址。

我让它工作......部分。

在测试阶段,我使用"直接银行转账"为了完成订单而付款的方法。以下代码适用于该付款方式,但正如我后来发现通过PayPal下订单时它不再有效。

此外,如果您将产品更改为虚拟产品,则可以使用PayPal,但只要添加

add_filter( 'woocommerce_cart_needs_shipping', '__return_true' );

带回运输选项然后它再次停止工作。

到目前为止,这是我的代码

    global $woocommerce;
if (strtolower($woocommerce->customer->get_shipping_country()) === 'us') {
$this->send( 'shopone@gmail.com', $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );
} else {
$this->send( 'shoptwo@gmail.com', $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );
};

希望有人可以发现一些明显缺少的东西,提前谢谢!

更新: Zapier工作但有一些限制,我仍然希望找到一个不需要第三方应用程序的解决方案。

4 个答案:

答案 0 :(得分:1)

找到了解决方案。

对于将来遇到同样问题的人,请在课堂-wc-email-new-order.php中替换

$this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );

if ($this->object->shipping_country === 'US') {
$this->send( 'shopeone@gmail.com', $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );
} else { 
$this->send( 'shoptwo@email.com', $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );
}

问题是当你应该从订单本身抓取价值时,使用$ woocommerce全球来从客户那里获取价值。

如果您想根据不同的结帐字段创建条件,您可以在class-wc-api-orders.php中找到该列表

只需替换

 $order->shipping_country

$this->object->shipping_country

答案 1 :(得分:0)

使用名为Zapier的网站有另一种方法可以实现此目的。它允许您链接多个API,其中一个是WooCommerce。您需要做的就是创建一个触发器,如果​​Shipping Country是US,则发送电子邮件到shopone@gmail.com,如果不是,则发送shoptwo@gmail.com,无论付款方式如何。

答案 2 :(得分:0)

这比我见过的任何其他选项都要好,谢谢! 我更改了shipping_country的{​​{1}}。

是否可以添加两个以上的变体?让我们这样说:

billing_state

答案 3 :(得分:0)

我尝试应用代码以允许基于自定义结帐字段的条件电子邮件 - 选择两个值。如上所述,没有电子邮件发出。

if ($this->object->billing_divisions === 'sprinkler') {
  $this->send( 'shopeone@gmail.com', $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );
} else { 
  $this->send( 'shoptwo@mail.com', $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );
}

我再次编辑了php文件以添加替换代码。否则,管理员不会触发新订单电子邮件。

if ( $this->is_enabled() && $this->get_recipient() ) {

我一直绞尽脑汁试图根据自定义结帐字段选择获取有条件的电子邮件。