基本上,我试图让我的函数根据发货方式(即本地取货选项#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;
}
最合适的回答,由SO网友:Aniruddha Gawade 整理而成
首先,get_shipping_method
是一个函数。您似乎将其用作变量。
其次$order->get_shipping_method()
返回发货方法标签,您正试图将其与id进行比较。
现在,您可以比较标题,也可以使用
$order->get_items( \'shipping\' );
返回一个数组
name
,
type
,
method_id
,
cost
和
taxes
, 和使用
method_id
用于比较。