本文约 3,241 字,预计阅读 9 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:上线验收被打回三次,问题都在”少了几个栏目”
做党政机关、学校、事业单位网站的共同经历是:功能都做完了,验收时却被指出”没有政策解读栏目””没做互动留言办理””IPv6 打不开”。这些不是 WordPress 的技术难点,而是规范层面的必答题。和普通企业官网不同,这类站点的评价体系里功能排列第二,合规性与信息可用性排第一。承接方如果按”企业官网”的惯性做事,返工几乎不可避免。
原理分析:合规要求主要落在四个层面
第一层是信息内容与栏目结构。这类站点通常要求有明确的法定栏目:信息公开(含目录与指南)、政策文件与解读、办事服务入口、互动交流(留言办理、征集调查)、机构概况与联系方式。缺失任何一项,在抽查或普查中都算问题。
第二层是发布审核制度。业内通行的做法是”三审三校”:拟稿人自校、编辑部初审、分管负责终审,重要稿件还需责任人核签。技术上要体现差异:不同人员不同角色、发布留痕可追溯。
第三层是访问可用性与无障碍。对公众服务性站点,通常要求 IPv6 可达、支持常见浏览器与移动端适配,以及达到一定水平的信息无障碍(例如按键可达、足够的颜色对比度、图片有替代文字)。
第四层是网络安全。这涉及等级保护定级与备案(依据 GB/T 22239-2019 等基本要求,二级、三级为常见等级),以及日志留存、漏洞修复、应急预案等制度化要求。这一部分通常由专业测评机构出具报告,建站方负责提供符合性的技术条件。
| 层面 | 可见产出 | 常见漏项 |
|---|---|---|
| 栏目结构 | 导航菜单、专题页 | 政策解读、留言办理入口 |
| 审核发布 | 角色划分、操作日志 | 无留痕、无审核流 |
| 可用性 | IPv6、移动端、无障碍 | 仅 IPv4、未做键盘可达 |
| 安全保障 | 等级保护报告、备份 | 日志留存不足六个月 |
保姆级实操
步骤 1:把栏目结构建成信息架构,而不是临时页面。 用 WordPress 菜单 + 自定义文章类型组织,法定栏目用 register_post_type 独立承载,便于后续统计与导出:
add_action( 'init', function () {
register_post_type( 'info_open', [
'labels' => [ 'name' => '信息公开', 'singular_name' => '信息公开条目' ],
'public' => true,
'has_archive' => true,
'rewrite' => [ 'slug' => 'info-open' ],
'supports' => [ 'title', 'editor', 'excerpt' ],
'show_in_rest'=> true,
'menu_icon' => 'dashicons-media-document',
] );
register_post_type( 'policy_read', [
'labels' => [ 'name' => '政策解读', 'singular_name' => '政策解读' ],
'public' => true,
'rewrite' => [ 'slug' => 'policy-read' ],
'has_archive' => true,
'supports' => [ 'title', 'editor', 'thumbnail' ],
'show_in_rest'=> true,
] );
} );
步骤 2:建立三级审核角色。 沿用前面讲过的分角色思路:撰稿人只能投稿,编辑可单篇终审,主编负责发布,所有状态变化写入日志(可参考 transition_post_status 钩子)。
步骤 3:互动留言要有闭环。 留言表单建议不要用纯邮件外发(容易丢),而是入库 + 后台流转 + 生成办理状态:
add_action( 'wp_insert_post', function ( $post_id, $post ) {
if ( 'public_message' !== $post->post_type ) {
return;
}
update_post_meta( $post_id, '_msg_status', 'received' );
update_post_meta( $post_id, '_msg_received_at', current_time( 'mysql' ) );
}, 10, 2 );
步骤 4:IPv6 与 HTTPS 同期交付。 Nginx 侧监听双栈:
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.gov.cn;
ssl_certificate /etc/nginx/ssl/example.crt;
ssl_certificate_key /etc/nginx/ssl/example.key;
ssl_protocols TLSv1.2 TLSv1.3;
add_header Strict-Transport-Security "max-age=31536000; preload" always;
}
步骤 5:日志留存与安全配置。 access_log 建议按月切分并留存不少于六个月(人力和磁盘允许的话更久);同时关闭 XML-RPC、限制登录尝试、禁止目录列表:
location = /xmlrpc.php { return 403; }
autoindex off;
server_tokens off;
步骤 6:交付前跑一遍可用性自查。 用 curl -6 验证 IPv6 可达,用键盘 Tab 走一遍主导航,检查图片 alt、表单 label 是否齐全,检查是否存在错链与空白页面。网站无障碍改造要点
常见踩坑
- 把法定栏目做成了”导航文字 + 一个静态页面”,后续无法分类检索。
- 案例: 某单位站上线后被指出”政策解读”栏目长期空白,原因是该栏目是静态页,编辑找不到后台入口,三年没更新一条内容。
- 所有工作人员共用一个管理员账号,发布无法追溯,也不符合审核分权要求。
- 留言表单直接写信箱,某次邮件服务商拒绝后,群众留言静默丢失一个月没人发现。
- 只配了 IPv4 的 DNS A 记录,没有 AAAA 记录,IPv6 环境完全打不开。
- 等级保护测评时才补买 WAF 与日志审计,导致整改周期翻倍。
- 用了国外的 CDN 与字体 CDN,部分地区加载失败甚至引发合规疑问——字体、统计、地图等第三方资源要本地化。网站 ICP 备案流程详解
总结
这类站点的判断标准是:栏目是否按规范齐备、发布是否可追溯、访问是否无障碍且 IPv6 可达、安全是否有成套制度。行动清单:法定栏目结构化建模 → 三审三校角色划分 → 留言系统闭环入库 → 双栈 HTTPS → 日志留存与加固 → 交付前可用性走查。技术从来不是这里的主要难点,难点在于把”规范”翻译成具体的信息架构与流程。
