' . esc_html__('会员功能未启用。', 'aksrt') . '';
return;
}
$user_id = (int) ($user_id ?? get_current_user_id());
$level = function_exists('aksrt_get_user_vip_level') ? aksrt_get_user_vip_level($user_id) : 0;
$expires = (int) get_user_meta($user_id, 'aksrt_vip_expires', true);
$expired_level = (int) get_user_meta($user_id, 'aksrt_vip_level_expired', true);
$levels = is_array($vip_settings['levels'] ?? null) ? $vip_settings['levels'] : [];
$desc_top = (string) ($vip_settings['desc'] ?? '');
$user = get_userdata($user_id);
$display = $user ? $user->display_name : '';
$user_bio = $user ? trim((string) $user->description) : '';
if ($user_bio === '') {
$user_bio = __('这家伙很懒,什么都没有写…', 'aksrt');
}
// Avatar: zibll avatar-img avatar-md (55px fixed box).
$avatar = get_avatar($user_id, 110, '', $display, ['class' => 'avatar']);
// Name row with identity chips (zibll zib_get_user_name parity).
$name_html = '';
if (function_exists('aksrt_get_user_name')) {
$name_html = aksrt_get_user_name([
'id' => $user_id,
'class' => 'flex1 flex ac',
'vip' => true,
'follow' => false,
]);
}
if ($name_html === '') {
$name_html = esc_html($display);
if (function_exists('aksrt_render_user_identity_chips')) {
$name_html .= aksrt_render_user_identity_chips($user_id, 'card');
}
}
// Status column (zibll my_vip_box).
$status_html = '';
$btn_type = 'pay';
if ($level > 0) {
$lv_name = (string) ($levels[$level]['name'] ?? ('VIP' . $level));
$lv_desc = (string) ($levels[$level]['desc'] ?? '');
if ($expires <= 0) {
$badge = '' . esc_html__('永久会员', 'aksrt') . '';
if ($level < 2) {
$btn_type = 'upgrade';
}
} else {
$badge = ''
. esc_html(sprintf(__('到期时间:%s', 'aksrt'), wp_date('Y年m月d日', $expires))) . '';
$btn_type = 'renew_' . $level;
}
$status_html = '
'
. '
' . esc_html__('我的会员', 'aksrt') . '
'
. '
'
. '
' . esc_html($lv_name) . '
'
. $badge
. '
'
. '
' . esc_html($lv_desc !== '' ? $lv_desc : __('尊享专属特权', 'aksrt')) . '
'
. '
';
} elseif ($expired_level > 0) {
$exp_label = $expires > 0
? sprintf(__('过期时间:%s', 'aksrt'), wp_date('Y年m月d日', $expires))
: __('已过期', 'aksrt');
$status_html = ''
. '
' . esc_html__('当前会员状态', 'aksrt') . '
'
. '
'
. '
' . esc_html__('已过期', 'aksrt') . '
'
. '
' . esc_html($exp_label) . '
'
. '
'
. ($desc_top !== '' ? '
' . esc_html($desc_top) . '
' : '')
. '
';
$btn_type = 'pay';
} else {
// Never opened VIP — zibll: 当前会员状态 / 未开通会员 / desc.
$status_html = ''
. '
' . esc_html__('当前会员状态', 'aksrt') . '
'
. '
'
. '
' . esc_html__('未开通会员', 'aksrt') . '
'
. '
'
. '
' . esc_html($desc_top !== '' ? $desc_top : __('开通会员,尊享专属特权', 'aksrt')) . '
'
. '
';
$btn_type = 'pay';
}
// Left user box (zibll user_box).
$user_box = ''
. '
'
. '
'
. '
' . $name_html . '
'
. '
' . esc_html($user_bio) . '
'
. '
'
. '
';
// Level cards.
$cards = '';
foreach ([1, 2] as $lv) {
if (empty($levels[$lv]['enabled'])) {
continue;
}
$lv_name = (string) ($levels[$lv]['name'] ?? ('VIP' . $lv));
$lv_desc = (string) ($levels[$lv]['desc'] ?? '');
// Preserve admin equity HTML as-is (sanitize/wrap only; never re-split into items).
$equity_raw = (string) ($levels[$lv]['equity'] ?? '');
$equity = function_exists('aksrt_format_vip_equity_html')
? aksrt_format_vip_equity_html($equity_raw)
: '';
$cta = sprintf(__('开通%s', 'aksrt'), $lv_name);
$vip_attr = $lv;
if (str_starts_with($btn_type, 'renew_')) {
$renew_lv = (int) substr($btn_type, 6);
if ($lv === $renew_lv) {
$cta = sprintf(__('续费%s', 'aksrt'), $lv_name);
} elseif ($lv > $renew_lv) {
$cta = sprintf(__('升级%s', 'aksrt'), $lv_name);
} else {
continue;
}
} elseif ($btn_type === 'upgrade') {
if ($lv <= $level) {
continue;
}
$cta = sprintf(__('升级%s', 'aksrt'), $lv_name);
$vip_attr = 2;
} elseif ($level > 0 && $lv < $level) {
continue;
} elseif ($level > 0 && $lv === $level) {
$cta = sprintf(__('续费%s', 'aksrt'), $lv_name);
}
$cards .= '';
// Decorative gem: do NOT use .abs-center (that utility is full-width header/search placement).
$cards .= '
';
$cards .= '
';
$cards .= '
';
$cards .= '
';
$cards .= '
' . esc_html($lv_name) . '
';
if ($lv_desc !== '') {
$cards .= '
' . esc_html($lv_desc) . '
';
}
$cards .= '
';
$cards .= $equity;
$cards .= '
'
. '' . esc_html($cta) . ''
. ' ';
$cards .= '
';
}
// Points exchange (non-VIP only).
$points_html = '';
if ($level <= 0 && !empty($vip_settings['points_exchange']['enabled'])) {
$points_html = '';
}
?>