From 52d790c654701aa9e8ec5be0b9dba2db90df476f Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 17 Sep 2026 13:03:05 +0800 Subject: [PATCH] =?UTF-8?q?fix(payment):=20=E5=8D=A1=E5=AF=86=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=AF=8F=E9=A1=B5=E9=BB=98=E8=AE=A4=2020=20=E6=9D=A1?= =?UTF-8?q?=EF=BC=8C=E6=92=A4=E6=8E=89=E5=B7=A5=E5=85=B7=E6=A0=8F=E3=80=8C?= =?UTF-8?q?=E6=AF=8F=E9=A1=B5=E6=98=BE=E7=A4=BA=E3=80=8D=E6=8E=A7=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - DEFAULT_PER_PAGE 由 30 改为 20。 - 删除 per_page_selector() 及其表单样式(.aksrt-perpage-form / .order-header-right), 工具栏恢复为「过滤链接 + 搜索表单」两段式。 ice_perpage 仍作为 URL 参数被尊重,只是不再提供界面入口。 - 保留上一提交的分页健壮性修复:页码夹取到 [1, total_pages]、翻页链接用显式基准 URL、 越界页码回退并重查、禁用按钮 pointer-events:none。 - 契约测试同步改写:断言默认值为 20,并显式禁止「每页显示」控件回归。 验证:默认态渲染为「每页 20 共10」,页面内不存在 aksrt-perpage-form; ice_perpage=5 仍能翻到第 2 页且链接携带该参数;paged=2 越界仍回退到第 1 页的 10 行; node --test 三套 18/18;php -l 通过;无头 Chrome 截图确认工具栏无多余控件。 --- src/Admin/Native/PayChargeCards.php | 55 ++------------------ tests/admin/charge-cards-pagination.test.cjs | 37 +++++++------ 2 files changed, 26 insertions(+), 66 deletions(-) diff --git a/src/Admin/Native/PayChargeCards.php b/src/Admin/Native/PayChargeCards.php index dc6bf1c0..4cc815b3 100644 --- a/src/Admin/Native/PayChargeCards.php +++ b/src/Admin/Native/PayChargeCards.php @@ -21,11 +21,8 @@ class PayChargeCards { public const NONCE = 'aksrt_card_pass_page'; public const EXPORT_AJAX_ACTION = 'aksrt_card_pass_export'; - /** 每页条数默认值;列表页可由 ice_perpage 覆盖。 */ - public const DEFAULT_PER_PAGE = 30; - - /** 「每页显示」下拉的可选值。 */ - private const PER_PAGE_CHOICES = [10, 20, 30, 50, 100]; + /** 每页条数默认值;列表页可由 ice_perpage 覆盖(无界面控件,仅供 URL / 程序化调用)。 */ + public const DEFAULT_PER_PAGE = 20; private static $instance = null; @@ -158,12 +155,11 @@ class PayChargeCards { '; - // 当前筛选参数(不含 paged)。分页链接与「每页显示」表单都显式带上它, - // 不再依赖 add_query_arg() 默认取 $_SERVER['REQUEST_URI'](链接会随环境漂移,且列条件容易丢)。 + // 当前筛选参数(不含 paged)。分页链接显式带上它,不再依赖 add_query_arg() + // 默认取 $_SERVER['REQUEST_URI'](链接会随环境漂移,且列条件容易丢)。 $query_args = $this->list_query_args($status, $type, $other, $s, $orderby, $order, $per_page); - echo '
' - . '
' . $this->per_page_selector($per_page, $query_args) . $search . '
'; + echo '
' . $search . '
'; $filters = [ 'status' => $status, @@ -1050,44 +1046,6 @@ class PayChargeCards { return $args; } - /** - * 「每页显示」选择器。 - * - * 服务端一直支持 ice_perpage,但界面上没有任何地方能改它 —— 每页条数恒等于默认值, - * 于是数据量小于默认每页条数时永远只有一页,四个翻页按钮恒为 disabled, - * 看起来就是「分页是坏的」。补上这个入口之后,条数、页码才有意义。 - * - * @param array $query_args 当前筛选参数(ice_perpage 由本表单自己提供)。 - */ - private function per_page_selector(int $per_page, array $query_args): string { - $choices = self::PER_PAGE_CHOICES; - if (!in_array($per_page, $choices, true)) { - $choices[] = $per_page; - sort($choices); - } - - $hidden = ''; - foreach ($query_args as $key => $value) { - if ($key === 'ice_perpage') { - continue; - } - $hidden .= ''; - } - - $options = ''; - foreach ($choices as $choice) { - $options .= ''; - } - - return '
' - . $hidden - . '' - . '' . esc_html__('每页显示', 'aksrt') . '' - . '' - . '' - . '
'; - } - /** * 分页(参考主题 zibpay_admin_pagenavi 同款结构与禁用逻辑)。 * @@ -1140,9 +1098,6 @@ class PayChargeCards {