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:
commit
dae85f0198
4 files changed
+60
-6
No files matched your search
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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',
|
||||||
|
|||||||
Reference in new issue
Block a user