' . esc_html__('请先登录', 'aksrt') . ''; return; } $per_page = 20; $paged = max(1, (int) ($_GET['order_page'] ?? 1)); $tab = sanitize_key((string) ($_GET['order_tab'] ?? ($_GET['otab'] ?? ''))); $status = sanitize_key((string) ($_GET['order_status'] ?? '')); $type_filter = sanitize_key((string) ($_GET['order_type'] ?? '')); $section = sanitize_key((string) ($_GET['section'] ?? '')); // Accept legacy standalone-page tab keys. if ($tab === '' && isset($_GET['tab']) && sanitize_key((string) $_GET['tab']) !== 'orders') { // When rendered as standalone legacy include, outer tab may be status. $maybe = sanitize_key((string) $_GET['tab']); if (in_array($maybe, ['pending', 'after'], true)) { $tab = $maybe; } } $tab_aliases = []; if (isset($tab_aliases[$tab])) { $tab = $tab_aliases[$tab]; } $tab_status_map = [ 'pending' => \AKSRT\Payment\Order::STATUS_PENDING, 'after' => \AKSRT\Payment\Order::STATUS_REFUNDING, ]; if ($tab !== '' && isset($tab_status_map[$tab])) { $status = $tab_status_map[$tab]; } $orders_view = function_exists('aksrt_get_orders_page_view') ? aksrt_get_orders_page_view($user_id, $paged, $per_page, $status, $type_filter) : ['items' => [], 'total' => 0, 'total_pages' => 1, 'page' => 1, 'stats' => [], 'product_types' => []]; $orders = (array) ($orders_view['items'] ?? []); $total_pages = max(1, (int) ($orders_view['total_pages'] ?? 1)); $stats = is_array($orders_view['stats'] ?? null) ? $orders_view['stats'] : []; $type_options = is_array($orders_view['product_types'] ?? null) ? $orders_view['product_types'] : []; if ($type_options === [] && class_exists('\AKSRT\Core\DomainModel')) { $type_options = array_merge(['' => __('全部类型', 'aksrt')], \AKSRT\Core\DomainModel::order_product_type_labels()); } $tabs = [ '' => __('全部', 'aksrt'), 'pending' => __('待支付', 'aksrt'), 'after' => __('退款中', 'aksrt'), ]; $base_query = ['tab' => 'orders']; if ($type_filter !== '') { $base_query['order_type'] = $type_filter; } if ($section !== '') { $base_query['section'] = $section; } /** * Build URL staying inside user center orders tab. * * @param array $args */ $orders_url = static function (array $args = []) use ($base_query): string { $q = array_merge($base_query, $args); $base = function_exists('aksrt_get_user_center_url') ? aksrt_get_user_center_url('orders') : home_url('/profile/'); $url = remove_query_arg( ['order_tab', 'otab', 'order_status', 'order_page', 'order_type', 'section', 'tab'], $base ); // Always keep tab=orders. $q['tab'] = 'orders'; // Map status filter to order_tab (avoid clashing with UC tab=). if (isset($q['tab_status'])) { $q['order_tab'] = $q['tab_status']; unset($q['tab_status']); } foreach ($q as $k => $v) { if ($v === null || $v === '') { unset($q[$k]); } } return add_query_arg($q, $url); }; $pending_count = (int) ($stats['pending'] ?? 0); ?>
$type_label) : $is_type_active = (string) $type_key === (string) $type_filter; $type_args = [ 'order_type' => $type_key !== '' ? $type_key : null, 'order_tab' => $tab !== '' ? $tab : null, 'order_page' => 1, ]; $type_url = $orders_url($type_args); if ($type_key === '') { $type_url = remove_query_arg('order_type', $type_url); } ?>
$tab_label) : $is_active = $tab === $tab_key; $tab_url = $tab_key !== '' ? $orders_url(['order_tab' => $tab_key, 'order_page' => 1]) : remove_query_arg(['order_tab', 'otab', 'order_status', 'order_page'], $orders_url()); ?> 0) : ?>
×
0 && !$is_points) : ?> ()

1) : ?>
$tab !== '' ? $tab : null, 'order_page' => $i, ], static fn($v) => $v !== null && $v !== '')); ?>