Я считаю, что я близок, но совершенно не уверен, так как мои ограниченные знания php основаны на пробах и ошибках. Я пытаюсь извлечь данные из плагина, который создает мой ярлык доставки, в плагин, который отслеживает доставку. В частности, Elex EasyPost в расширенное отслеживание доставки.
У меня есть пример кода для интеграции с AST здесь:
<?php
add_action( 'woocommerce_shipstation_shipnotify', 'add_tracking_information_into_order', 10, 2 );
function add_tracking_information_into_order($order, $tracking_details){
$order_id = $order->get_id();
$args = array(
'tracking_provider' => $tracking_details['carrier'],
'tracking_number' => wc_clean( $tracking_details['tracking_number'] ),
'date_shipped' => wc_clean( $tracking_details['ship_date'] ),
'status_shipped' => 1,
);
$ast = new WC_Advanced_Shipment_Tracking_Actions;
$tracking_item = $ast->insert_tracking_item( $order_id, $args );
}
Это должно быть похоже, но, очевидно, мне нужно заменить ловушку и элементы в массиве. Вот что Elex послал мне, когда его спросили о хуках, которые они используют.
get_post_meta($order_id, ‘wf_easypost_labels’);
Sample output:
array(
0=>(‘url’=>label_url,’tracking_number’=> (string)’tracking code’,’integrator_txn_id’=> ‘integerator_id’,’shipment_id’=>’package_shipment_id’,’order_date’=>order_date,’carrier’=>EX:USPS,”link”=>tracking_link,);//First package
1=>(‘url’=>label_url,’tracking_number’=> (string)’tracking code’,’integrator_txn_id’=> ‘integerator_id’,’shipment_id’=>’package_shipment_id’,’order_date’=>order_date,’carrier’=>EX:USPS,”link”=>tracking_link,);//Second package
)
Итак, вот моя попытка использовать их массив в моем собственном фрагменте:
<?php
add_action( 'woocommerce_checkout_update_order_meta', 'add_tracking_information_into_order', 10, 2 );
function add_tracking_information_into_order($order, $myship_func){
$myship_func = get_post_meta($order_id, 'wf_easypost_labels');
$order_id = $order->get_id();
$args = array(
'tracking_provider' => $myship_func['carrier'],
'tracking_number' => wc_clean($myship_func['tracking code']),
'date_shipped' => wc_clean($myship_func['order_date']),
'status_shipped' => 1,
);
$ast = new WC_Advanced_Shipment_Tracking_Actions;
$tracking_item = $ast->insert_tracking_item( $order_id, $args );
}
Когда порядок изначально заполнен и сгенерирован ярлык Elex получает все данные и вставляет их в мету. Мне нужно извлечь эту мету либо во время генерации, либо после генерации и вставить ее в поля AST.
Таким образом, мой главный вопрос - я на правильном пути? Мне просто нужно выяснить правильный хук или мой метод доступа к массиву Elex неправильный? Опять же, я обычно сравниваю коды, фрагменты и кубики, и заставляю вещи «выглядеть правильно», и тогда они работают (или нет). Я сам не очень хорошо разбираюсь в массивах или функциях классов (что, как я полагаю, в Elex).
В этом случае код молча терпит неудачу, поэтому я подозреваю, что это зацепка или комбинация крючка и мой код.