抽出 commerce header 与二级导航,购物车/订单/收益共用主站交易中心壳层;收益 stats 轻量化,降低独立电商后台观感。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
97 lines
3.4 KiB
PHP
97 lines
3.4 KiB
PHP
<?php
|
|
/**
|
|
* Commerce center (cart / orders / revenue) presentation helpers.
|
|
*
|
|
* @package AKSRT
|
|
*/
|
|
|
|
defined('ABSPATH') || exit;
|
|
|
|
if (!function_exists('aksrt_get_commerce_nav_items')) {
|
|
/**
|
|
* Secondary nav for commerce center pages.
|
|
*
|
|
* @return array<int, array{key:string,label:string,url:string}>
|
|
*/
|
|
function aksrt_get_commerce_nav_items(): array {
|
|
$items = [];
|
|
|
|
$cart = function_exists('aksrt_get_cart_page_url') ? aksrt_get_cart_page_url() : '';
|
|
if ($cart !== '') {
|
|
$items[] = [
|
|
'key' => 'cart',
|
|
'label' => __('购物车', 'aksrt'),
|
|
'url' => $cart,
|
|
];
|
|
}
|
|
|
|
$orders = function_exists('aksrt_get_orders_page_url') ? aksrt_get_orders_page_url() : '';
|
|
if ($orders !== '') {
|
|
$items[] = [
|
|
'key' => 'orders',
|
|
'label' => __('我的订单', 'aksrt'),
|
|
'url' => $orders,
|
|
];
|
|
}
|
|
|
|
$revenue = function_exists('aksrt_get_revenue_page_url') ? aksrt_get_revenue_page_url() : '';
|
|
if ($revenue !== '') {
|
|
$items[] = [
|
|
'key' => 'revenue',
|
|
'label' => __('创作收益', 'aksrt'),
|
|
'url' => $revenue,
|
|
];
|
|
}
|
|
|
|
$center = function_exists('aksrt_get_user_center_url') ? aksrt_get_user_center_url() : '';
|
|
if ($center !== '') {
|
|
$items[] = [
|
|
'key' => 'center',
|
|
'label' => __('个人中心', 'aksrt'),
|
|
'url' => $center,
|
|
];
|
|
}
|
|
|
|
return $items;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('aksrt_render_commerce_page_header')) {
|
|
/**
|
|
* Shared commerce page header: title / intro / secondary nav.
|
|
*
|
|
* @param array{title?:string,subtitle?:string,active?:string} $args
|
|
*/
|
|
function aksrt_render_commerce_page_header(array $args = []): void {
|
|
$title = (string) ($args['title'] ?? '');
|
|
$subtitle = (string) ($args['subtitle'] ?? '');
|
|
$active = sanitize_key((string) ($args['active'] ?? ''));
|
|
$nav = aksrt_get_commerce_nav_items();
|
|
?>
|
|
<header class="aksrt-commerce-header">
|
|
<?php if ($title !== '') : ?>
|
|
<h1 class="aksrt-commerce-header__title"><?php echo esc_html($title); ?></h1>
|
|
<?php endif; ?>
|
|
<?php if ($subtitle !== '') : ?>
|
|
<p class="aksrt-commerce-header__subtitle"><?php echo esc_html($subtitle); ?></p>
|
|
<?php endif; ?>
|
|
<?php if (!empty($nav)) : ?>
|
|
<nav class="aksrt-commerce-header__nav" aria-label="<?php esc_attr_e('交易中心导航', 'aksrt'); ?>">
|
|
<?php foreach ($nav as $item) :
|
|
$is_active = $active !== '' && $active === ($item['key'] ?? '');
|
|
?>
|
|
<a
|
|
class="aksrt-commerce-header__nav-item<?php echo $is_active ? ' is-active' : ''; ?>"
|
|
href="<?php echo esc_url((string) ($item['url'] ?? '#')); ?>"
|
|
<?php echo $is_active ? ' aria-current="page"' : ''; ?>
|
|
>
|
|
<?php echo esc_html((string) ($item['label'] ?? '')); ?>
|
|
</a>
|
|
<?php endforeach; ?>
|
|
</nav>
|
|
<?php endif; ?>
|
|
</header>
|
|
<?php
|
|
}
|
|
}
|