fix(vip): preserve equity HTML instead of re-splitting into list items

This commit is contained in:
kate522 committed 2026-07-21 20:19:11 +08:00
1 parent ee5a16f9a0
commit fce5ab3088
5 files changed
+110 -102

No files matched your search

+11 -28
View File
@@ -57,35 +57,14 @@ trait VipServiceModal {
$equity = (string) ($levels[$level]['equity'] ?? '');
$cls = $user_id > 0 ? ' pay-vip' : ' signin-loader';
$equity_html = '';
$equity_raw = trim(wp_kses_post($equity));
if ($equity_raw !== '') {
if (preg_match('/<li[\s>]/i', $equity_raw)) {
$inner = preg_replace('#</?(ul|ol)[^>]*>#i', '', $equity_raw) ?? $equity_raw;
$equity_html = '<ul class="mb10 relative v-equity">' . $inner . '</ul>';
} else {
$parts = preg_split('/[\r\n]+|[;;,,||]+/u', wp_strip_all_tags($equity_raw)) ?: [];
$parts = array_values(array_filter(array_map('trim', $parts)));
if (count($parts) === 1 && mb_strlen($parts[0]) > 16) {
$chunks = preg_split('/(?=(?:免费|会员|更高|专属|付费|下载|身份|权益|折扣|无限))/u', $parts[0], -1, PREG_SPLIT_NO_EMPTY) ?: [];
$chunks = array_values(array_filter(array_map('trim', $chunks)));
if (count($chunks) > 1) {
$parts = $chunks;
}
}
if ($parts) {
$equity_html = '<ul class="mb10 relative v-equity">';
foreach ($parts as $p) {
$equity_html .= '<li>' . esc_html($p) . '</li>';
}
$equity_html .= '</ul>';
}
}
}
// Preserve admin equity HTML as-is (sanitize/wrap only; never re-split).
$equity_html = function_exists('aksrt_format_vip_equity_html')
? aksrt_format_vip_equity_html($equity, 'mb10 relative')
: '';
$icon = '<i class="fas fa-gem" aria-hidden="true"></i>';
$html = '<div class="vip-card pointer level-' . $level . ' vip-theme' . $level . $cls . '" vip-level="' . $level . '">';
$html .= '<div class="abs-center vip-baicon">' . $icon . '</div>';
$html .= '<div class="vip-baicon" aria-hidden="true">' . $icon . '</div>';
$html .= '<div class="vip-img abs-right">' . $icon . '</div>';
$html .= '<div class="relative">';
$html .= '<div class="vip-name mb10"><span class="mr6">' . $icon . '</span>' . esc_html($name) . '</div>';
@@ -152,7 +131,9 @@ trait VipServiceModal {
$panes .= '<div class="muted-2-color em09 mb6">' . esc_html($lv_desc) . '</div>';
}
if ($equity !== '') {
$panes .= '<ul class="v-equity">' . $equity . '</ul>';
$panes .= function_exists('aksrt_format_vip_equity_html')
? aksrt_format_vip_equity_html($equity)
: '<div class="v-equity">' . wp_kses_post($equity) . '</div>';
}
$panes .= '</div><div class="pay-vip-products">';
$panes .= $products;
@@ -230,7 +211,9 @@ trait VipServiceModal {
$panes .= '<div class="pay-vip-info level-' . $lv . '">';
$panes .= '<div class="v-name font-bold">' . esc_html($lv_name) . '</div>';
if ($equity !== '') {
$panes .= '<ul class="v-equity">' . $equity . '</ul>';
$panes .= function_exists('aksrt_format_vip_equity_html')
? aksrt_format_vip_equity_html($equity)
: '<div class="v-equity">' . wp_kses_post($equity) . '</div>';
}
$panes .= '</div><div class="pay-vip-products">';
$panes .= $products;