roles, $exempt_roles))) { return true; } } // 2. 订单判定:检查是否有有效的 VIP 订单 if (class_exists('AKSRT_Order')) { $order_mgr = AKSRT_Order::get_instance(); $valid_order = method_exists($order_mgr, 'get_valid_vip_order') ? $order_mgr->get_valid_vip_order($user_id) : null; if ($valid_order) { return true; } } return false; } /** * 获取 VIP 徽标文本 * * @return string */ function aksrt_get_vip_badge_text(): string { if (!class_exists('AKSRT_Settings')) return 'VIP'; $vip_settings = AKSRT_Settings::get_payment_vip_settings(); return sanitize_text_field($vip_settings['badge_text'] ?? 'VIP'); } /** * 渲染 VIP 徽标 HTML * * @param int $user_id * @param string $size sm | md | lg * @return string */ function aksrt_render_vip_badge(int $user_id = 0, string $size = 'sm'): string { if (!aksrt_is_vip($user_id)) return ''; $badge_text = aksrt_get_vip_badge_text(); $size_class = 'aksrt-vip-badge--' . $size; return ' ' . esc_html($badge_text) . ''; } /** * 获取用户 VIP 等级信息(用于展示) * * @param int $user_id * @return array{is_vip: bool, badge_text: string, badge_html: string, name: string} */ function aksrt_get_vip_info(int $user_id = 0): array { $is_vip = aksrt_is_vip($user_id); $badge_text = aksrt_get_vip_badge_text(); return [ 'is_vip' => $is_vip, 'badge_text' => $badge_text, 'badge_html' => $is_vip ? aksrt_render_vip_badge($user_id) : '', 'name' => $is_vip ? ($badge_text . '会员') : '普通用户', ]; }