【发布时间】:2017-06-18 01:57:35
【问题描述】:
我正在使用 Woocommerce Local Pick up Plus 并想根据 order_shipping_method 更改电子邮件地址,但我无法使用它,也无法使用 var_dump 查看发生了什么
function wc_change_admin_new_order_email_recipient( $recipient, $order ) {
global $woocommerce;
$order = new WC_Order( $order->ID );
if ( ! in_array( $order->get_shipping_method(), array( 'adress 1', 'adress 2', 'adress 3' ) ) ) {
return $recipient = "myemail+nopickup@gmail.com";
}else{
if (in_array( $order->get_shipping_method(), 'adress 1' )) {
$recipient = "myemail+adress1@gmail.com";
}elseif (in_array( $order->get_shipping_method(), 'adress 2' )) {
$recipient = "myemail+adress2@gmail.com";
}elseif (in_array( $order->get_shipping_method(), 'adress 3' )) {
$recipient = "myemail+adress3@gmail.com";
}
return $recipient;
}
}
add_filter('woocommerce_email_recipient_new_order', 'wc_change_admin_new_order_email_recipient', 1, 2);
【问题讨论】:
-
我认为
get_shipping_method()方法不会返回带有空格的字符串。另外,请参阅in_array(),您在else语句中使用不正确。另请参阅 my answer 了解如何将$order变量传递给过滤器。 -
我做了一些改变。我现在遇到的问题是要知道函数中的 $order arg 是和数组||对象还是只是订单的 id。 wc_change_admin_new_order_email_recipient($recipient, $order)
-
nvm $order 是 ID 哈哈
-
您不需要获取
new WC_Order(),因为您正在传递$order对象。您的in_array()用法仍然错误。
标签: wordpress woocommerce