fix(frontend): route the VIP points-exchange entry through the custom currency name
/user/vip/ 档位购买卡下方的入口横条仍硬编码「积分兑换会员」,而后台
「积分配置 → 自定义货币名称」改名后不跟随。上一轮改名只覆盖了兑换弹窗
标题与会员弹窗内入口,页面自身的入口横条是另一处服务端渲染,漏改了。
入口横条(inc/helpers/aksrt-vip.php)
- aksrt_get_vip_points_exchange_entry_html 改取已加载的
catalog.currency_name,回退 Settings::get_currency_name() 再回退「积分」
同一页面上其余漏改的兑换文案一并收口,命名与入口/弹窗保持一致:
- VipServiceModal:积分不足提示 → {货币名}不足,暂时无法兑换
- VipServicePurchase.exchange_with_points:兑换未启用 / 兑换无效 /
不足三处 WP_Error、流水说明、订单备注(%1$s兑换会员 %2$d %1$s。)
currency_name 在此单独解析,get_catalog 内的局部变量不在该作用域
- LedgerPresentation:vip_points_exchange 流水原因标签
契约测试新增源断言,并用两个 PHP harness 做运行时断言:入口横条
(改名后 / 已是会员不输出 / 缺 key 回退)与弹窗(余额充足 / 不足两分支)。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
4e62b325d2
commit
5b16bc6e15
7 files changed
+177
-11
No files matched your search
@@ -429,12 +429,15 @@ if (!function_exists('aksrt_get_vip_purchase_url')) {
|
||||
*
|
||||
* 参考主题在「我的会员」摘要与两张档位购买卡之后输出全宽入口横条:
|
||||
* .c-yellow.zib-widget.flex.ac.jsb(zib-widget → 本主题 aksrt-panel 表面)
|
||||
* ├─ .flex1.em12:points-color 图标 +「积分兑换会员」
|
||||
* ├─ .flex1.em12:points-color 图标 +「{自定义货币名}兑换会员」
|
||||
* └─ .badg.radius.c-yellow:「立即兑换」+ fa-chevron-circle-right
|
||||
* 门控对齐参考主题 zibpay_get_vip_points_exchange_link:已是会员不展示
|
||||
* ($vip_level ? '' : link),且要求积分兑换会员开启、至少一个会员等级
|
||||
* 开启并存在可兑换套餐(catalog.points_exchange 已内含 credits 门控)。
|
||||
*
|
||||
* 入口文案的货币名取 catalog.currency_name(后台「积分配置 → 自定义货币名称」),
|
||||
* 与它打开的兑换弹窗标题、会员弹窗内的入口保持同一命名。
|
||||
*
|
||||
* 入口点击经 data-aksrt-vip-points-open 由 pay-vip.js 打开 wp_footer 输出的
|
||||
* 静态兑换弹窗(aksrt_render_vip_points_exchange_modal),与会员购买弹窗内
|
||||
* 的入口共用同一弹窗与开合开关。
|
||||
@@ -463,10 +466,19 @@ if (!function_exists('aksrt_get_vip_points_exchange_entry_html')) :
|
||||
return '';
|
||||
}
|
||||
|
||||
// 入口文案跟随自定义货币名称(后台「积分配置 → 自定义货币名称」),与它打开的
|
||||
// 兑换弹窗标题(VipServiceModal)和会员弹窗内的入口(pay-vip.js)保持同一命名。
|
||||
$currency = (string) ($catalog['currency_name'] ?? '');
|
||||
if ($currency === '') {
|
||||
$currency = class_exists('\AKSRT\Settings\Settings')
|
||||
? \AKSRT\Settings\Settings::get_currency_name()
|
||||
: __('积分', 'aksrt');
|
||||
}
|
||||
|
||||
return '<a class="uc-vip-points-entry flex ac jsb" href="javascript:;" data-aksrt-vip-points-open>'
|
||||
. '<span class="flex1 em12 c-yellow">'
|
||||
. '<svg class="icon mr6 em12" aria-hidden="true"><use xlink:href="#icon-points-color"></use></svg>'
|
||||
. esc_html__('积分兑换会员', 'aksrt')
|
||||
. esc_html(sprintf(__('%s兑换会员', 'aksrt'), $currency))
|
||||
. '</span>'
|
||||
. '<span class="badg radius c-yellow">' . esc_html__('立即兑换', 'aksrt')
|
||||
. '<i class="fa fas fa-chevron-circle-right ml6" aria-hidden="true"></i></span></a>';
|
||||
|
||||
Reference in new issue
Block a user