fix(polish): 订单购物车论坛粉边软化 + 论坛付费帖购链路

- 购物车/商品/论坛表面复用 #77 soft recipe(mix 边 + soft ring)
- 论坛 visibility=pay:订单 resource + 余额扣费闭环
- VIP 价/免费解锁 + 购买 CTA/AJAX,复用现有 Order/Credits

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Fable 5 committed 2026-07-12 13:34:03 +08:00
1 parent de204c4794
commit 043ac178fe
21 files changed
+411 -52

No files matched your search

+51 -2
View File
@@ -89,9 +89,58 @@ if (empty($topic['can_view'])) :
<a href="<?php echo esc_url(wp_login_url(get_permalink($topic_id))); ?>" class="aksrt-forum-topic__primary-btn"><?php esc_html_e('登录后解锁', 'aksrt'); ?></a>
<?php endif; ?>
<?php elseif ($deny_vis === 'pay') : ?>
<?php
$viewer_id = get_current_user_id();
$vip_price_raw = get_post_meta($topic_id, '_aksrt_pay_vip_price', true);
$vip_set = ($vip_price_raw !== '' && $vip_price_raw !== null && $vip_price_raw !== false);
$is_vip_user = $viewer_id > 0 && function_exists('aksrt_is_vip') && aksrt_is_vip($viewer_id);
if (!$is_vip_user && $viewer_id > 0 && function_exists('aksrt_is_vip_exempt') && aksrt_is_vip_exempt($viewer_id)) {
$is_vip_user = true;
}
$charge_amount = (float) $pay_price;
$is_free_vip = false;
if ($is_vip_user && $vip_set) {
$charge_amount = max(0.0, (float) $vip_price_raw);
$is_free_vip = $charge_amount <= 0;
}
?>
<p><?php esc_html_e('该主题为付费内容,请购买后查看。', 'aksrt'); ?></p>
<?php if (!empty($pay_price)) : ?>
<span class="aksrt-forum-topic__pay-price"><?php printf(esc_html__('价格:¥%s', 'aksrt'), esc_html((string) $pay_price)); ?></span>
<?php if ($is_vip_user && $vip_set) : ?>
<span class="aksrt-forum-topic__pay-price">
<?php
if ($is_free_vip) {
esc_html_e('VIP 免费', 'aksrt');
} else {
printf(
esc_html__('VIP 价:¥%s', 'aksrt'),
esc_html(number_format($charge_amount, 2, '.', ''))
);
if (!empty($pay_price) && (float) $pay_price > $charge_amount) {
echo ' <del>' . esc_html(sprintf(__('原价 ¥%s', 'aksrt'), number_format((float) $pay_price, 2, '.', ''))) . '</del>';
}
}
?>
</span>
<?php elseif (!empty($pay_price)) : ?>
<span class="aksrt-forum-topic__pay-price"><?php printf(esc_html__('价格:¥%s', 'aksrt'), esc_html(number_format((float) $pay_price, 2, '.', ''))); ?></span>
<?php endif; ?>
<?php if (!is_user_logged_in()) : ?>
<a href="<?php echo esc_url(wp_login_url(get_permalink($topic_id))); ?>" class="aksrt-forum-topic__primary-btn"><?php esc_html_e('登录后购买', 'aksrt'); ?></a>
<?php else : ?>
<button type="button" class="aksrt-forum-topic__primary-btn js-aksrt-purchase-topic"
data-topic-id="<?php echo esc_attr((string) $topic_id); ?>"
data-price="<?php echo esc_attr(number_format($charge_amount, 2, '.', '')); ?>"
data-free="<?php echo $is_free_vip ? '1' : '0'; ?>">
<i class="fas fa-shopping-cart"></i>
<?php
if ($is_free_vip) {
esc_html_e('VIP 免费解锁', 'aksrt');
} else {
printf(esc_html__('余额支付 ¥%s', 'aksrt'), esc_html(number_format($charge_amount, 2, '.', '')));
}
?>
</button>
<span class="aksrt-forum-topic__unlock-feedback js-aksrt-action-feedback" aria-live="polite"></span>
<?php endif; ?>
<?php else : ?>
<p><?php esc_html_e('该主题当前处于受限可见或审核状态。', 'aksrt'); ?></p>