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:
@@ -15,6 +15,9 @@ defined('ABSPATH') || exit;
|
||||
add_filter('query_vars', function ($vars) {
|
||||
$vars[] = 'aksrt_user_center';
|
||||
$vars[] = 'user_nicename';
|
||||
$vars[] = 'aksrt_orders';
|
||||
$vars[] = 'aksrt_cart';
|
||||
$vars[] = 'aksrt_revenue';
|
||||
return $vars;
|
||||
});
|
||||
|
||||
@@ -36,8 +39,15 @@ add_action('template_redirect', function () {
|
||||
add_action('init', function () {
|
||||
add_rewrite_tag('%aksrt_user_center%', '([^&]+)');
|
||||
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('^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. 统一模板拦截器(核心)---
|
||||
@@ -145,7 +155,7 @@ add_action('init', function () {
|
||||
}
|
||||
|
||||
// 统一 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');
|
||||
if ($flushed !== $rewrite_version) {
|
||||
flush_rewrite_rules(false);
|
||||
|
||||
@@ -106,6 +106,25 @@ $_aksrt_special_templates = [
|
||||
'title' => '个人中心',
|
||||
'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 */
|
||||
@@ -377,6 +396,21 @@ function aksrt_get_current_special_template_path(): string {
|
||||
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')) {
|
||||
$auth_template = aksrt_get_auth_template_file((string) get_query_var('aksrt_auth_tab'), true);
|
||||
$auth_template_path = aksrt_locate_template_file($auth_template);
|
||||
|
||||
@@ -74,7 +74,7 @@ endif;
|
||||
if (!function_exists('aksrt_get_orders_page_url')) :
|
||||
/**
|
||||
* 订单中心页面 URL(模板 templates/pages/page-orders.php)。
|
||||
* 未指派页面时回退 /orders/(与 Scripts 路由一致),保证「权益与消费」入口可用。
|
||||
* 优先已绑定页面;否则回退固定 rewrite /orders/(template-registry + routing)。
|
||||
*/
|
||||
function aksrt_get_orders_page_url(): string {
|
||||
$url = function_exists('aksrt_get_page_url_by_template')
|
||||
@@ -83,6 +83,12 @@ function aksrt_get_orders_page_url(): string {
|
||||
if ($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/');
|
||||
}
|
||||
endif;
|
||||
|
||||
@@ -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_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) {
|
||||
$commerce_css = get_template_directory() . '/assets/css/routes/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(
|
||||
'aksrt-orders',
|
||||
$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(
|
||||
'aksrt-revenue',
|
||||
$base_uri . '/assets/css/routes/revenue.css',
|
||||
@@ -785,7 +789,7 @@ $hmb_js = get_template_directory() . '/assets/js/header-newadd.js';
|
||||
}
|
||||
|
||||
// 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(
|
||||
'aksrt-route-cart',
|
||||
$base_uri . '/assets/css/routes/cart.css',
|
||||
|
||||
Reference in New Issue
Block a user