搜索全站
建站 15 分钟阅读

用 WordPress 交付客户项目的完整清单:交付、培训与权限交接

项目做完不等于交付完成。本文给出 WordPress 客户项目的完整交付流程:上线前检查、演示与培训、源码与账号交接、文档交付、质保约定,附权限交接与代码移交的实操命令。

U
UFO_PF 2016-01-25 · 阅读 15 分钟
用 建站
阅读提示
本文约 5,641 字,预计阅读 15 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:验收通过那一刻,才是纠纷的开始

很多建站项目在”甲方说 OK”之后就进入了失控状态:源码还在乙方服务器上,甲方要改个东西还得找人;商业主题是用乙方账号买的,第二年续费成了谈判筹码;后台账号给了甲方一个管理员权限,三个月后他们自己装了一堆来路不明的插件,站点被挂马,然后要求乙方免费修复。

交付不是”把网站给他”,而是把控制权、知识、责任三样东西完整地转移过去。缺任何一样,项目都不算结束,后续会持续消耗你的精力(或让客户持续受制于人)。

一套完整的交付流程应该包含五个部分:交付前自检、演示与培训、权限与账号交接、文档交付、质保与边界约定。每个部分都有可打勾的具体条目。

原理分析:交付要转移的三样东西

第一样:控制权(Control)。 域名注册商账号、云服务商账号、服务器 SSH、WordPress 后台管理员、CDN、邮箱服务、第三方插件授权。判断标准是:在不经过你的情况下,客户能不能随时换掉你? 如果答案是不能,说明控制权还在你手上,这是对客户的不负责任,也是你自己的法律风险。

第二样:知识(Knowledge)。 客户会不会用?能不能自己发文章、换图片、加产品、看表单数据?会不会做备份?出问题时知道联系谁?知识没转移,就会有源源不断的”帮我改一下这个标题”的低价值工单。

第三样:责任(Responsibility)。 交付之后谁负责什么?bug 归你,内容修改归客户,服务器故障归谁,安全事件归谁。边界不清会导致”网站被黑了,你们当初没做好安全”这种扯皮。

交付的常见模式对比:

模式 做法 优点 风险
全部自持 乙方代管服务器与域名 客户省心 客户被绑定,乙方有持续责任
完全交接 所有账号归甲方 责任清晰 甲方无技术能力时易出问题
交接 + 托管服务 账号归甲方,乙方签运维合同 责任清晰 + 有支持 需要签好 SLA

推荐第三种:账号全部归甲方,同时签一份运维服务合同。 这样客户随时可以换人(你的服务质量由市场检验),你也能获得持续的运维收入,责任边界写进合同即可。

保姆级实操:五步完成交付

步骤 1:交付前自检(上线前 24 小时)。 逐项打勾,别到客户面前才发现:

# 1. 确认核心、主题、插件均为最新且无已知漏洞
wp core version
wp plugin list --status=active --format=csv --fields=name,version,update
wp theme list --format=csv --fields=name,version,update

# 2. 清理开发期遗留数据
wp post delete $(wp post list --post_type=post --post_status=draft --format=ids) --force
wp option get blogdescription          # 检查是否残留"又一个 WordPress 站点"
wp post list --post_type=page --format=csv --fields=ID,post_title

# 3. 检查是否有测试内容、测试数据、测试账号
wp user list --format=csv --fields=user_login,user_email,roles

# 4. 固定链接与站点地址确认
wp option get home
wp option get siteurl
wp option get permalink_structure
wp rewrite flush --hard

# 5. 关闭开发期的调试开关(关键!)
wp config get WP_DEBUG
wp config set WP_DEBUG false --raw --type=constant
wp config set WP_DEBUG_DISPLAY false --raw --type=constant
wp config set DISALLOW_FILE_EDIT true --raw --type=constant   # 禁止后台编辑主题文件

# 6. 检查站点可见性(开发期可能设置了"阻止搜索引擎索引")
wp option get blog_public    # 必须返回 1

还需要检查:robots.txt 是否允许抓取、是否残留 noindex、站点地图是否可访问、表单是否指向正确的收件邮箱(开发期常填的是开发者邮箱)。

步骤 2:录制演示与培训。 培训的目标不是”讲一遍后台”,而是让客户能独立完成最高频的三件事。一般企业站来说就是:发布文章、添加产品、查看表单数据。

培训建议录屏(10–15 分钟,按功能分段),比现场讲一次有效得多——客户会忘,但视频可以反复看。内容结构:

## 培训大纲(企业站示例,20 分钟)

1. 后台登录与界面认识(3 分钟)
   - 登录地址、忘记密码怎么办、双因素认证
2. 发布一篇新闻(6 分钟)
   - 文章 vs 页面的区别
   - 区块编辑器的基本操作:段落、标题、图片、列表
   - 分类与标签的选择
   - SEO 标题与描述填写
   - 预览与发布
3. 添加一个产品(5 分钟)
   - 自定义字段填写规范
   - 图片尺寸要求与压缩
   - PDF 手册上传
4. 查看表单数据与导出(3 分钟)
   - 后台表单入口
   - 导出 CSV
   - 邮件通知设置
5. 日常注意事项(3 分钟)
   - 不要安装来源不明的插件
   - 更新前先备份
   - 遇到问题联系谁、响应时效

培训里一定要讲”不要做什么”:不要装破解版插件/主题、不要用管理员账号日常发文(建一个编辑账号)、不要在服务器上直接改文件(用子主题)、更新前先看有没有备份。

步骤 3:权限与账号交接。 这是最需要细致的一步。

WordPress 后台账号:

# 创建客户的正式管理员账号(不要用开发期的临时账号)
wp user create client_admin admin@客户域名.com \
  --role=administrator \
  --user_pass='生成的强随机密码' \
  --display_name='客户管理员'

# 为日常编辑创建权限受限的账号
wp user create client_editor editor@客户域名.com \
  --role=editor \
  --user_pass='另一个强随机密码'

# 清理开发期账号:降级而不是删除,保留内容归属
wp user set-role dev_account subscriber
wp user list --format=csv --fields=user_login,roles,user_email

用 WP-CLI 生成强随机密码:

# Linux 下生成 20 位随机密码
openssl rand -base64 24 | tr -d '/+=' | head -c 20; echo

账号交接清单(做成表格,逐项确认已移交):

序号 账号类型 移交内容 是否以客户主体注册 确认
1 域名注册商 账号、密码、注册邮箱 是 ☐
2 云服务商 主账号、子账号、安全组配置 是 ☐
3 服务器 IP、SSH 密钥、sudo 账号 — ☐
4 WordPress 后台 管理员账号、密码 — ☐
5 CDN 账号、加速域名配置 是 ☐
6 对象存储 AccessKey、Bucket 信息 是 ☐
7 商业主题/插件 授权码、购买凭证(客户名义) 是 ☐
8 企业邮箱 / 发信服务 SMTP 配置、API Key 是 ☐
9 统计与分析 GA4、百度统计、Search Console 是 ☐
10 备案信息 备案号、备案密码 是 ☐

密码交接的安全方式:不要通过微信/邮件明文发送。用一次性加密链接(如 Bitwarden Send、国内的密码保险箱分享),或者当面交付密封信封。

步骤 4:源码与文档交付。 用 Git 仓库交付,而不是打个压缩包发过去:

# 在客户服务器或代码托管平台初始化仓库
cd /var/www/html
git init
git remote add origin git@客户仓库地址:client/site.git

# .gitignore:不提交 WordPress 核心、上传文件、配置文件
cat > .gitignore <<'EOF'
# WordPress 核心(由 composer 或官方包管理,不入库)
/wp-admin/
/wp-includes/
/wp-*.php
/index.php
/xmlrpc.php
/license.txt
/readme.html

# 上传的媒体文件(体积大,由备份方案处理)
/wp-content/uploads/

# 配置文件(含数据库凭据,绝不入库)
/wp-config.php
wp-config.php

# 缓存与临时文件
/wp-content/cache/
/wp-content/upgrade/
*.log
.DS_Store
EOF

# 只提交自研代码
git add wp-content/themes/客户子主题/
git add wp-content/plugins/自定义插件/
git add .gitignore README.md
git commit -m "Initial commit: 客户官网子主题与自定义插件"
git push -u origin main

交付文档清单:

## 交付文档

1. 《网站后台使用手册》PDF
   - 按培训大纲组织,每步配截图
2. 《服务器环境说明》
   - 操作系统版本、Nginx/PHP/MySQL 版本
   - 目录结构说明
   - cron 任务清单及作用
   - 备份脚本位置与执行方式
3. 《第三方服务清单》
   - 插件/主题授权信息、到期时间、续费方式
   - CDN、对象存储、邮件服务等配置说明
4. 《应急预案》
   - 网站打不开的排查顺序
   - 如何恢复备份(含命令)
   - 联系人与响应时效

步骤 5:约定质保边界并签字。 这一步决定了交付后你还会被打扰多久:

## 质保条款(示例)

**质保期**:上线之日起 3 个月

**免费修复范围**:
- 交付功能清单内 Must 项的缺陷(bug)
- 主流浏览器下的显示错位
- 因交付代码本身导致的性能或安全问题

**不属于质保范围(另行报价)**:
- 新增功能、页面或字段
- 内容修改、图片替换、文案调整
- 因客户自行安装插件/修改代码导致的问题
- 因服务器环境变更(如客户自行升级 PHP)导致的问题
- 第三方服务(支付、短信、地图)接口变更导致的问题
- 服务器被攻击、被墙、欠费导致的故障

**响应时效**:
- P0(站点不可访问):2 小时内响应
- P1(核心功能异常):1 个工作日内响应
- P2(一般问题):3 个工作日内响应

常见踩坑

  1. 忘记关 WP_DEBUG。 上线后错误信息直接显示在页面上,泄露服务器路径和数据库表前缀。
  2. 忘了改 blog_public。 开发期勾了”阻止搜索引擎索引”,上线后一直没取消,三个月后客户问”为什么搜不到我们网站”。
  3. 表单收件邮箱还是开发者的。 客户的表单提交数据全发到了乙方邮箱,等发现时已经丢了几十条线索。
  4. 商业主题用乙方账号购买。 第二年续费要找乙方,等于变相绑定。必须在需求阶段就写进合同。
  5. 只给了一个管理员账号。 客户所有同事都用这一个账号,无法追溯操作,且容易误删内容。应该给”1 个管理员 + 若干编辑”。
  6. 源码交付是个压缩包。 后续改动无法追溯版本。必须用 Git,并写好 .gitignore 排除核心文件与配置。
  7. 案例:一次”交付后无法维护”的项目。 乙方用某可视化页面构建器做了全站,内容以短代码形式存在 post_content 里。交付时只给了后台账号和一份”使用说明”,但说明里没讲清楚”必须用这个构建器编辑,否则排版会乱”。半年后客户换了运营人员,用区块编辑器改了一篇文章,整页布局崩了。客户认为是 bug,乙方认为是误操作,双方僵持。最后乙方花了一周重做那一版页面。教训:交付前要在需求文档里明确”内容的可移植性要求”——优先使用区块编辑器或 ACF 字段存储内容,避免使用会把内容锁死在构建器里的方案;如果用了构建器,必须在培训里明确告知风险,并在后台显著位置提示。相关内容在 网站需求文档怎么写 的需求模板里有对应条款。

总结

交付的判断标准是”客户可以完全不依赖你,也可以选择继续雇你”。执行顺序:上线前 24 小时自检(关调试、清测试数据、确认索引与邮箱)→ 录屏培训(讲清高频操作与”不要做什么”)→ 账号逐项交接(全部以客户主体注册,密码加密交付)→ Git 交付源码 + 四份文档 → 签质保条款明确边界。其中”账号全部归客户主体”这一条最容易被忽略,也最容易引发后续纠纷。 交付前应配合 网站验收清单 逐项核对,交付后的运维责任划分可以参考 中小企业网站运维分工,技术层面的安全检查则按 网站上线安全基线配置 执行。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。