-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') . '' . esc_html($tracking_number) . '
'; if (!empty($tracking_info['trackDetails'])) { echo '' . __('时间', 'woo-czl-express') . ' | '; echo '' . __('地点', 'woo-czl-express') . ' | '; echo '' . __('状态', 'woo-czl-express') . ' | '; echo '
---|---|---|
' . esc_html($detail['track_date']) . ' | '; echo '' . esc_html($detail['track_location']) . ' | '; echo '' . esc_html($detail['track_content']) . ' | '; 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'])) { ?>