refactor(admin): 清理付费 meta 死字段并补齐商品介绍渲染

延续上一轮 pay_count「只写不读」的排查,把其余写而不读的字段一次
性处理完。按字段性质分两类处理,不是一律删。

【删除】纯数据垃圾,无界面入口、无消费方:
- card_keys / purchase_limit / stock:只有 DomainModel 的默认值与
  sanitize,全仓零引用。契约测试原本还断言它们不得出现在 metabox 上。
- 随 card_keys 一并删除 sanitle_card_keys() 助手。
- video_scale_height「固定长宽比例」:参考主题里这是轮播组件 widget
  的参数,不属于付费视频字段,当初误搬到付费 metabox 上且从未被消费。
  连默认值、sanitize、metabox 保存项一起移除,并同步修正契约测试。

【补齐】有界面入口、管理员填了但不显示的四个字段:
pay_title / pay_doc / pay_details / pay_extra_hide 此前只有 metabox
输入框和 sanitize,前端一个都不读。按参考主题 pages/download.php
的结构接到单篇资源下载页:
- pay_title 有值则替代文章标题作商品标题(回退 get_the_title);
- pay_doc 商品简介、pay_details 更多详情渲染在标题区下方;
- pay_extra_hide 额外隐藏内容只在有下载权限时渲染在下载盒之后。
三处 HTML 输出均走 wp_kses_post,与 sanitize 侧的安全 HTML 口径一致。

同时把 pay_extra_hide 接进文章页付费盒
(aksrt_get_paid_box_html):该函数本身只在有付费权限时执行,天然
就是「付费后才可见」的位置,复用已有的 .pay-extra-hide 样式。

验证:php -l 四个 PHP 文件无语法错误;
node --test tests/widget-system/*.test.cjs 449 项全部通过。
This commit is contained in:
kate522 committed 2026-10-06 20:17:58 +08:00
1 parent 8e1fd0a30f
commit b447c41f13
5 files changed
+25 -32

No files matched your search

+15 -1
View File
@@ -40,7 +40,11 @@ if (!$is_download) {
}
$article_url = get_permalink($post) . '#posts-pay';
$pay_title = get_the_title($post);
// 商品简介 / 更多详情 / 额外隐藏内容三个字段只在管理员填写时才有输出。
$pay_title = trim((string) ($pay_meta['pay_title'] ?? '')) !== '' ? (string) $pay_meta['pay_title'] : get_the_title($post);
$pay_doc = trim((string) ($pay_meta['pay_doc'] ?? ''));
$pay_details = trim((string) ($pay_meta['pay_details'] ?? ''));
$pay_extra_hide = trim((string) ($pay_meta['pay_extra_hide'] ?? ''));
$subtitle = '';
if (function_exists('get_the_subtitle')) {
// noop — AKSRT may not have legacy subtitle helper
@@ -115,6 +119,13 @@ get_header();
<?php endif; ?>
</div>
<?php if ($pay_doc !== '') : ?>
<div><?php echo wp_kses_post($pay_doc); ?></div>
<?php endif; ?>
<?php if ($pay_details !== '') : ?>
<div class="muted-2-color em09" style="margin:2em 0;"><?php echo wp_kses_post($pay_details); ?></div>
<?php endif; ?>
<?php if ($can_dl) : ?>
<div style="margin-bottom:2em;" class="pay-box">
<?php
@@ -128,6 +139,9 @@ get_header();
wp_reset_postdata();
?>
</div>
<?php if ($pay_extra_hide !== '') : ?>
<div class="pay-extra-hide"><?php echo wp_kses_post($pay_extra_hide); ?></div>
<?php endif; ?>
<?php elseif ($need_login) : ?>
<div class="alert jb-yellow em12" style="margin:2em;">
<b><?php echo ($price <= 0) ? esc_html__('免费资源,请登录后下载', 'aksrt') : esc_html__('请先登录后再下载', 'aksrt'); ?></b>