*/ private function pages(): array { return [ 'overview' => [ 'slug' => self::MENU_SLUG, 'title' => __('概览', 'aksrt'), 'callback' => [$this, 'render_overview_page'], ], 'orders' => [ 'slug' => 'aksrt_orders', 'title' => __('订单', 'aksrt'), 'callback' => static function (): void { if (class_exists('AKSRT\Admin\Native\PayOrders')) { PayOrders::get_instance()->render_orders_page(); return; } wp_die(esc_html__('订单模块未初始化。', 'aksrt')); }, ], 'products' => [ 'slug' => 'aksrt_pay_products', 'title' => __('付费文章', 'aksrt'), 'callback' => static function (): void { if (class_exists('AKSRT\\Admin\\Native\\PayProducts')) { PayProducts::get_instance()->render_products_page(); return; } wp_die(esc_html__('付费文章模块未初始化。', 'aksrt')); }, ], 'download_logs' => [ 'slug' => 'aksrt_download_logs', 'title' => __('下载记录', 'aksrt'), 'callback' => static function (): void { if (class_exists('AKSRT\\Admin\\Native\\PayDownloadLogs')) { PayDownloadLogs::get_instance()->render_page(); return; } wp_die(esc_html__('下载记录模块未初始化。', 'aksrt')); }, ], 'coupons' => [ 'slug' => 'aksrt_coupons', 'title' => __('优惠码', 'aksrt'), 'callback' => static function (): void { if (class_exists('AKSRT\\Admin\\Native\\PayCoupons')) { PayCoupons::get_instance()->render_page(); return; } wp_die(esc_html__('优惠码模块未初始化。', 'aksrt')); }, ], 'charge_cards' => [ 'slug' => 'aksrt_charge_cards', 'title' => __('卡密管理', 'aksrt'), 'callback' => static function (): void { if (class_exists('AKSRT\\Admin\\Native\\PayChargeCards')) { PayChargeCards::get_instance()->render_charge_cards_page(); return; } wp_die(esc_html__('卡密模块未初始化。', 'aksrt')); }, ], 'income' => [ 'slug' => 'aksrt_income', 'title' => __('创作分成', 'aksrt'), 'callback' => static function (): void { if (class_exists('AKSRT\\Admin\\Native\\PayIncome')) { PayIncome::get_instance()->render_income_page(); return; } wp_die(esc_html__('分成模块未初始化。', 'aksrt')); }, ], 'rebate' => [ 'slug' => 'aksrt_rebate', 'title' => __('推广返佣', 'aksrt'), 'callback' => static function (): void { if (class_exists('AKSRT\\Admin\\Native\\PayRebate')) { PayRebate::get_instance()->render_rebate_page(); return; } wp_die(esc_html__('返佣模块未初始化。', 'aksrt')); }, ], 'withdraw' => [ 'slug' => 'aksrt_withdraw', 'title' => __('提现审核', 'aksrt'), 'callback' => static function (): void { if (class_exists('AKSRT\\Admin\\Native\\PayWithdrawals')) { PayWithdrawals::get_instance()->render_withdrawals_page(); return; } wp_die(esc_html__('提现模块未初始化。', 'aksrt')); }, ], ]; } public function register_menus(): void { if (!current_user_can(self::CAPABILITY)) { return; } add_menu_page( __('支付中心', 'aksrt'), __('支付中心', 'aksrt'), self::CAPABILITY, self::MENU_SLUG, [$this, 'render_overview_page'], 'dashicons-cart', 36 ); foreach ($this->pages() as $page) { add_submenu_page( self::MENU_SLUG, $page['title'], $page['title'], self::CAPABILITY, $page['slug'], $page['callback'] ); } } public function pending_notices(): void { if (!current_user_can(self::CAPABILITY)) { return; } $page = isset($_GET['page']) ? sanitize_key((string) wp_unslash($_GET['page'])) : ''; if ($page !== 'aksrt_withdraw' && class_exists('\AKSRT\Payment\Withdrawal')) { $pending = (int) \AKSRT\Payment\Withdrawal::get_instance()->get_count(['status' => \AKSRT\Payment\Withdrawal::STATUS_PENDING]); if ($pending > 0) { $url = admin_url('admin.php?page=aksrt_withdraw&status=pending'); echo '
' . esc_html(sprintf( /* translators: %d: pending withdrawal count */ __('您有 %d 个提现申请待处理', 'aksrt'), $pending )) . '
'; echo ''; echo '' . esc_html__('运营数据入口。配置项仍在 AKSRT 主题设置 SPA。', 'aksrt') . '
'; echo '' . esc_html__('打开支付配置(SPA)', 'aksrt') . '
'; $this->render_footer(); } private function stat_card(string $label, string $value, string $url): void { echo ''; echo '