Merge pull request 'Worktree feat my orders' (#292) from worktree-feat-my-orders into main

Reviewed-on: CYL/wordpress-theme-aksrt#292
This commit is contained in:
kate522 committed 2026-07-25 13:42:06 +08:00
commit dae85f0198
4 files changed
+60 -6

No files matched your search

+11 -1
View File
@@ -15,6 +15,9 @@ defined('ABSPATH') || exit;
add_filter('query_vars', function ($vars) { add_filter('query_vars', function ($vars) {
$vars[] = 'aksrt_user_center'; $vars[] = 'aksrt_user_center';
$vars[] = 'user_nicename'; $vars[] = 'user_nicename';
$vars[] = 'aksrt_orders';
$vars[] = 'aksrt_cart';
$vars[] = 'aksrt_revenue';
return $vars; return $vars;
}); });
@@ -36,8 +39,15 @@ add_action('template_redirect', function () {
add_action('init', function () { add_action('init', function () {
add_rewrite_tag('%aksrt_user_center%', '([^&]+)'); add_rewrite_tag('%aksrt_user_center%', '([^&]+)');
add_rewrite_tag('%user_nicename%', '([^/]+)'); add_rewrite_tag('%user_nicename%', '([^/]+)');
add_rewrite_tag('%aksrt_orders%', '([0-1])');
add_rewrite_tag('%aksrt_cart%', '([0-1])');
add_rewrite_tag('%aksrt_revenue%', '([0-1])');
add_rewrite_rule('^profile/?$', 'index.php?aksrt_user_center=1', 'top'); add_rewrite_rule('^profile/?$', 'index.php?aksrt_user_center=1', 'top');
add_rewrite_rule('^user/([^/]+)/?$', 'index.php?user_nicename=$matches[1]', 'top'); add_rewrite_rule('^user/([^/]+)/?$', 'index.php?user_nicename=$matches[1]', 'top');
// Commerce center aliases (work even before WP page is assigned).
add_rewrite_rule('^orders/?$', 'index.php?aksrt_orders=1', 'top');
add_rewrite_rule('^cart/?$', 'index.php?aksrt_cart=1', 'top');
add_rewrite_rule('^revenue/?$', 'index.php?aksrt_revenue=1', 'top');
}); });
// --- 3b. 统一模板拦截器(核心)--- // --- 3b. 统一模板拦截器(核心)---
@@ -145,7 +155,7 @@ add_action('init', function () {
} }
// 统一 flush 检查 // 统一 flush 检查
$rewrite_version = AKSRT_VERSION . ':sign-profile-routing-v1'; $rewrite_version = AKSRT_VERSION . ':orders-cart-revenue-routing-v1';
$flushed = get_option('aksrt_user_rules_flushed'); $flushed = get_option('aksrt_user_rules_flushed');
if ($flushed !== $rewrite_version) { if ($flushed !== $rewrite_version) {
flush_rewrite_rules(false); flush_rewrite_rules(false);
@@ -106,6 +106,25 @@ $_aksrt_special_templates = [
'title' => '个人中心', 'title' => '个人中心',
'fallback' => '/profile/', 'fallback' => '/profile/',
], ],
// Commerce center pages (权益与消费 / 购物车 / 收益)
'orders' => [
'file' => 'templates/pages/page-orders.php',
'slug' => 'orders',
'title' => '我的订单',
'fallback' => '/orders/',
],
'cart' => [
'file' => 'templates/pages/page-cart.php',
'slug' => 'cart',
'title' => '购物车',
'fallback' => '/cart/',
],
'revenue' => [
'file' => 'templates/pages/page-revenue.php',
'slug' => 'revenue',
'title' => '收益中心',
'fallback' => '/revenue/',
],
]; ];
/** @var array 缓存 key=模板文件路径 => value=WP_Post|null */ /** @var array 缓存 key=模板文件路径 => value=WP_Post|null */
@@ -377,6 +396,21 @@ function aksrt_get_current_special_template_path(): string {
return $profile_template ?: ''; return $profile_template ?: '';
} }
if (get_query_var('aksrt_orders')) {
$orders_template = aksrt_locate_template_file('templates/pages/page-orders.php');
return $orders_template ?: '';
}
if (get_query_var('aksrt_cart')) {
$cart_template = aksrt_locate_template_file('templates/pages/page-cart.php');
return $cart_template ?: '';
}
if (get_query_var('aksrt_revenue')) {
$revenue_template = aksrt_locate_template_file('templates/pages/page-revenue.php');
return $revenue_template ?: '';
}
if (get_query_var('aksrt_sign')) { if (get_query_var('aksrt_sign')) {
$auth_template = aksrt_get_auth_template_file((string) get_query_var('aksrt_auth_tab'), true); $auth_template = aksrt_get_auth_template_file((string) get_query_var('aksrt_auth_tab'), true);
$auth_template_path = aksrt_locate_template_file($auth_template); $auth_template_path = aksrt_locate_template_file($auth_template);
+7 -1
View File
@@ -74,7 +74,7 @@ endif;
if (!function_exists('aksrt_get_orders_page_url')) : if (!function_exists('aksrt_get_orders_page_url')) :
/** /**
* 订单中心页面 URL(模板 templates/pages/page-orders.php)。 * 订单中心页面 URL(模板 templates/pages/page-orders.php)。
* 未指派页面时回退 /orders/(与 Scripts 路由一致),保证「权益与消费」入口可用。 * 优先已绑定页面;否则回退固定 rewrite /orders/(template-registry + routing)。
*/ */
function aksrt_get_orders_page_url(): string { function aksrt_get_orders_page_url(): string {
$url = function_exists('aksrt_get_page_url_by_template') $url = function_exists('aksrt_get_page_url_by_template')
@@ -83,6 +83,12 @@ function aksrt_get_orders_page_url(): string {
if ($url !== '') { if ($url !== '') {
return $url; return $url;
} }
if (function_exists('aksrt_get_template_url')) {
$boot = aksrt_get_template_url('orders');
if (is_string($boot) && $boot !== '' && $boot !== home_url('/')) {
return $boot;
}
}
return home_url('/orders/'); return home_url('/orders/');
} }
endif; endif;
+8 -4
View File
@@ -647,9 +647,13 @@ $hmb_js = get_template_directory() . '/assets/js/header-newadd.js';
} }
// 交易中心共享壳层(购物车 / 订单 / 收益) // 交易中心共享壳层(购物车 / 订单 / 收益)
// Virtual rewrite routes (aksrt_orders / aksrt_cart / aksrt_revenue) also count.
$is_commerce_center = is_page_template('templates/pages/page-orders.php') $is_commerce_center = is_page_template('templates/pages/page-orders.php')
|| is_page_template('templates/pages/page-cart.php') || is_page_template('templates/pages/page-cart.php')
|| is_page_template('templates/pages/page-revenue.php'); || is_page_template('templates/pages/page-revenue.php')
|| (bool) get_query_var('aksrt_orders')
|| (bool) get_query_var('aksrt_cart')
|| (bool) get_query_var('aksrt_revenue');
if ($is_commerce_center) { if ($is_commerce_center) {
$commerce_css = get_template_directory() . '/assets/css/routes/commerce.css'; $commerce_css = get_template_directory() . '/assets/css/routes/commerce.css';
if (file_exists($commerce_css)) { if (file_exists($commerce_css)) {
@@ -663,7 +667,7 @@ $hmb_js = get_template_directory() . '/assets/js/header-newadd.js';
} }
// 订单中心页 // 订单中心页
if (is_page_template('templates/pages/page-orders.php')) { if (is_page_template('templates/pages/page-orders.php') || (bool) get_query_var('aksrt_orders')) {
wp_enqueue_style( wp_enqueue_style(
'aksrt-orders', 'aksrt-orders',
$base_uri . '/assets/css/routes/orders.css', $base_uri . '/assets/css/routes/orders.css',
@@ -693,7 +697,7 @@ $hmb_js = get_template_directory() . '/assets/js/header-newadd.js';
} }
// 收益中心页 // 收益中心页
if (is_page_template('templates/pages/page-revenue.php')) { if (is_page_template('templates/pages/page-revenue.php') || (bool) get_query_var('aksrt_revenue')) {
wp_enqueue_style( wp_enqueue_style(
'aksrt-revenue', 'aksrt-revenue',
$base_uri . '/assets/css/routes/revenue.css', $base_uri . '/assets/css/routes/revenue.css',
@@ -785,7 +789,7 @@ $hmb_js = get_template_directory() . '/assets/js/header-newadd.js';
} }
// Cart page // Cart page
if (is_page_template('templates/pages/page-cart.php')) { if (is_page_template('templates/pages/page-cart.php') || (bool) get_query_var('aksrt_cart')) {
wp_enqueue_style( wp_enqueue_style(
'aksrt-route-cart', 'aksrt-route-cart',
$base_uri . '/assets/css/routes/cart.css', $base_uri . '/assets/css/routes/cart.css',