-1, 'status' => array('processing', 'shipping'), 'meta_key' => '_czl_tracking_number', 'meta_compare' => 'EXISTS' )); foreach ($orders as $order) { $this->update_tracking_info($order->get_id()); } } /** * 更新单个订单的轨迹信息 */ public function update_tracking_info($order_id) { try { $order = wc_get_order($order_id); if (!$order) { return; } $tracking_number = $order->get_meta('_czl_tracking_number'); if (empty($tracking_number)) { return; } $api = new CZL_API(); $tracking_info = $api->get_tracking($tracking_number); if (!empty($tracking_info)) { // 保存轨迹信息 $order->update_meta_data('_czl_tracking_history', $tracking_info); // 根据最新轨迹更新订单状态 if (!empty($tracking_info['trackDetails'])) { $latest_status = reset($tracking_info['trackDetails']); if (strpos($latest_status['track_content'], '已签收') !== false || strpos($latest_status['track_content'], 'Delivered') !== false) { $order->update_status('delivered', __('Package delivered', 'woo-czl-express')); } elseif ($order->get_status() !== 'delivered') { $order->update_status('in_transit', __('Package in transit', 'woo-czl-express')); } } $order->save(); } } catch (Exception $e) { error_log('CZL Express Error: Failed to update tracking info - ' . $e->getMessage()); } } /** * 在订单详情页显示跟踪信息 */ public static function display_tracking_info($order) { $tracking_number = get_post_meta($order->get_id(), '_czl_tracking_number', true); if (!$tracking_number) { return; } try { $api = new CZL_API(); $tracking_info = $api->get_tracking($tracking_number); if (!empty($tracking_info)) { echo '

' . __('物流跟踪信息', 'woo-czl-express') . '

'; echo '
'; echo '

' . __('运单号:', 'woo-czl-express') . '' . esc_html($tracking_number) . '

'; if (!empty($tracking_info['trackDetails'])) { echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; foreach ($tracking_info['trackDetails'] as $detail) { echo ''; echo ''; echo ''; echo ''; echo ''; } echo '
' . __('时间', 'woo-czl-express') . '' . __('地点', 'woo-czl-express') . '' . __('状态', 'woo-czl-express') . '
' . esc_html($detail['track_date']) . '' . esc_html($detail['track_location']) . '' . esc_html($detail['track_content']) . '
'; } echo '
'; } } catch (Exception $e) { error_log('CZL Express Tracking Error: ' . $e->getMessage()); } } /** * 添加跟踪链接到订单邮件 */ public static function add_tracking_to_email($order, $sent_to_admin = false) { $tracking_number = get_post_meta($order->get_id(), '_czl_tracking_number', true); if ($tracking_number) { $tracking_url = 'https://exp.czl.net/track/?query=' . urlencode($tracking_number); echo '

' . __('物流跟踪:', 'woo-czl-express') . ''; echo '' . esc_html($tracking_number) . '

'; } } /** * 在管理员订单页面显示轨迹信息 */ public static function display_admin_tracking_info($order) { $tracking_number = $order->get_meta('_czl_tracking_number'); if (empty($tracking_number)) { return; } ?>

' . esc_html($tracking_number) . '' ); ?>

get_meta('_czl_child_numbers'); if (!empty($child_numbers)) { echo '

' . __('子单号:', 'woo-czl-express') . ' ' . implode(', ', array_map('esc_html', $child_numbers)) . '

'; } // 显示参考号 $reference_number = $order->get_meta('_czl_reference_number'); if (!empty($reference_number)) { echo '

' . __('参考号:', 'woo-czl-express') . ' ' . esc_html($reference_number) . '

'; } // 显示偏远信息 $is_remote = $order->get_meta('_czl_is_remote'); if (!empty($is_remote)) { $remote_text = ''; switch ($is_remote) { case 'Y': $remote_text = __('偏远地区', 'woo-czl-express'); break; case 'A': $remote_text = __('FedEx偏远A级', 'woo-czl-express'); break; case 'B': $remote_text = __('FedEx偏远B级', 'woo-czl-express'); break; case 'C': $remote_text = __('FedEx偏远C级', 'woo-czl-express'); break; case 'N': $remote_text = __('非偏远地区', 'woo-czl-express'); break; } if ($remote_text) { echo '

' . __('地区类型:', 'woo-czl-express') . ' ' . esc_html($remote_text) . '

'; } } // 显示住宅信息 $is_residential = $order->get_meta('_czl_is_residential'); if ($is_residential === 'Y') { echo '

' . __('地址类型:', 'woo-czl-express') . ' ' . __('住宅地址', 'woo-czl-express') . '

'; } // 显示轨迹信息 $tracking_history = $order->get_meta('_czl_tracking_history'); if (!empty($tracking_history['trackDetails'])) { ?>