diff --git a/src/Admin/Native/UsersMenusTickets.php b/src/Admin/Native/UsersMenusTickets.php index f614ef82..0dacd0d2 100644 --- a/src/Admin/Native/UsersMenusTickets.php +++ b/src/Admin/Native/UsersMenusTickets.php @@ -399,6 +399,9 @@ trait UsersMenusTickets { $kind = $row['kind']; echo '
'; + // admin-post.php 依赖 $_REQUEST['action'] 触发 admin_post_{action} 钩子; + // 缺失时 WordPress 不输出任何内容(白屏),这里按工单类型分发。 + echo ''; echo ''; if ($kind === 'report') { diff --git a/tests/widget-system/report-ban-contract.test.cjs b/tests/widget-system/report-ban-contract.test.cjs index 324843f3..c8bf179a 100644 --- a/tests/widget-system/report-ban-contract.test.cjs +++ b/tests/widget-system/report-ban-contract.test.cjs @@ -162,6 +162,10 @@ test('native ban page mirrors the reference theme layout', () => { for (const label of [`__('立即处理', 'aksrt')`, `__('正在处理', 'aksrt')`, `__('被举报用户', 'aksrt')`, `__('被举报用户禁封信息', 'aksrt')`, `__('申诉用户', 'aksrt')`, `__('禁封信息', 'aksrt')`, `__('申诉信息', 'aksrt')`, `__('处理方式', 'aksrt')`, `__('处理留言', 'aksrt')`, `__('申诉通过(解封该用户)', 'aksrt')`, `__('申诉拒绝(保持原禁封状态)', 'aksrt')`, `__('此处内容会反馈给举报人', 'aksrt')`, `__('确认提交', 'aksrt')`, `__('用户状态正常', 'aksrt')`, `__('当前用户已解封', 'aksrt')`, `__('此用户已解封', 'aksrt')`, `__('暂无申请记录', 'aksrt')`]) { assert.ok(tickets.includes(label), `missing process form label: ${label}`) } + // 处理表单必须携带隐藏 action 字段:admin-post.php 靠它触发 + // admin_post_{action} 钩子,缺失时 WordPress 不输出任何内容(白屏)。 + assert.match(tickets, /name="action" value="aksrt_users_update_report"/) + assert.match(tickets, /name="action" value="aksrt_users_process_appeal"/) // 分页对齐参考主题 zibpay_admin_pagenavi(每页 20 条) assert.match(tickets, /TICKETS_PER_PAGE = 20/)