2017-05-23 1 views
0

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 protected]'; 
    $shippingOptionTwo = '[email protected]'; 
    $shippingOptionThree = '[email protected]'; 

    $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_shipping = $ order-> get_items ('shipping')을 얻을 수 없습니다. ($ 주문은 빈 공간을 인쇄합니다).

미리 감사드립니다.

P.S : 이것은 내가 처음에 내 코드를 만들기 위해 사용되는 링크입니다 : WooCommerce email notifications: different email recipient for different cities

답변

0

내 팀과 나는 약간의 시간 디버깅 시간에 우리는 솔루션에왔다. 어떤 이유 이의 위해서 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 

그리고 그것은 매력으로 작동합니다!

관련 문제