fix(orders): load user center assets before panel navigation

This commit is contained in:
2026-08-12 16:48:40 +08:00
parent 01e9a0f4ca
commit 651c5f28f8
5 changed files with 265 additions and 254 deletions
+59 -23
View File
@@ -462,6 +462,36 @@ $hmb_js = get_template_directory() . '/assets/js/header-newadd.js';
['aksrt-route-profile'],
file_exists($user_center_css_path) ? (string) filemtime($user_center_css_path) : $version
);
// Orders is a lazy user-center panel, so its independent assets must
// be ready before client-side panel replacement can insert its markup.
$has_orders_panel = false;
if (class_exists('\AKSRT\User\Center')) {
$dashboard_tabs = \AKSRT\User\Center::get_instance()->get_dashboard_tabs();
$has_orders_panel = isset($dashboard_tabs['orders']);
}
if ($has_orders_panel) {
$orders_css = get_template_directory() . '/assets/css/routes/orders.css';
if (file_exists($orders_css)) {
wp_enqueue_style(
'aksrt-orders',
$base_uri . '/assets/css/routes/orders.css',
['aksrt-tokens'],
(string) filemtime($orders_css)
);
}
$order_center_js = get_template_directory() . '/assets/js/order-center.js';
if (file_exists($order_center_js)) {
wp_enqueue_script(
'aksrt-order-center',
$base_uri . '/assets/js/order-center.js',
['aksrt-script', 'aksrt-rehydrate', 'aksrt-core-request', 'aksrt-core-modal-runtime'],
(string) filemtime($order_center_js),
true
);
}
}
$identity_js = get_template_directory() . '/assets/js/routes/user-center-auth.js';
if (file_exists($identity_js)) {
wp_enqueue_script(
@@ -472,10 +502,16 @@ $hmb_js = get_template_directory() . '/assets/js/header-newadd.js';
true
);
}
$user_center_deps = file_exists($identity_js)
? ['aksrt-script', 'aksrt-route-user-center-auth']
: ['aksrt-script'];
if ($has_orders_panel && wp_script_is('aksrt-order-center', 'registered')) {
$user_center_deps[] = 'aksrt-order-center';
}
wp_enqueue_script(
'aksrt-route-user-center',
$base_uri . '/assets/js/routes/user-center.js',
file_exists($identity_js) ? ['aksrt-script', 'aksrt-route-user-center-auth'] : ['aksrt-script'],
$user_center_deps,
file_exists(get_template_directory() . '/assets/js/routes/user-center.js')
? (string) filemtime(get_template_directory() . '/assets/js/routes/user-center.js')
: $version,
@@ -671,30 +707,30 @@ $hmb_js = get_template_directory() . '/assets/js/header-newadd.js';
}
}
// 订单中心:独立页 / 虚拟 rewrite / 用户中心 tab=orders
// 订单中心:独立页 / 虚拟 rewrite;用户中心在上方按可用 tab 预载。
$is_orders_surface = is_page_template('templates/pages/page-orders.php')
|| (bool) get_query_var('aksrt_orders')
|| (
(function_exists('aksrt_is_user_center_page') && aksrt_is_user_center_page())
&& isset($_GET['tab'])
&& sanitize_key((string) wp_unslash($_GET['tab'])) === 'orders'
);
|| (bool) get_query_var('aksrt_orders');
if ($is_orders_surface) {
wp_enqueue_style(
'aksrt-orders',
$base_uri . '/assets/css/routes/orders.css',
['aksrt-tokens'],
$version
);
wp_enqueue_script(
'aksrt-order-center',
$base_uri . '/assets/js/order-center.js',
['aksrt-script', 'aksrt-core-request', 'aksrt-core-modal-runtime'],
file_exists(get_template_directory() . '/assets/js/order-center.js')
? (string) filemtime(get_template_directory() . '/assets/js/order-center.js')
: $version,
true
);
$orders_css = get_template_directory() . '/assets/css/routes/orders.css';
if (file_exists($orders_css)) {
wp_enqueue_style(
'aksrt-orders',
$base_uri . '/assets/css/routes/orders.css',
['aksrt-tokens'],
(string) filemtime($orders_css)
);
}
$order_center_js = get_template_directory() . '/assets/js/order-center.js';
if (file_exists($order_center_js)) {
wp_enqueue_script(
'aksrt-order-center',
$base_uri . '/assets/js/order-center.js',
['aksrt-script', 'aksrt-rehydrate', 'aksrt-core-request', 'aksrt-core-modal-runtime'],
(string) filemtime($order_center_js),
true
);
}
}
// 收益中心:旧路由重定向页 / 用户中心 tab=revenue。