返回

外贸独立站 starter 发布:一条命令出素站

2026年10月13日 · 产品

用 WordPress 给外贸客户建站,最难的不是做页面,而是每个项目开头那套一模一样的起步动作:装十来个插件、把登录口和 XML-RPC 这些攻击面一个个堵上、把后台里客户永远用不到的菜单和推广横幅清干净、再搭一遍页眉页脚。做三五个项目之后我们意识到,这套动作本身就是产品,于是把它沉淀成了 arsh-wordpress-starter,一个内部 starter 模板仓库。现在起一个新站,克隆仓库、跑一条 bin/setup.sh,从空的 Docker 环境到一个可以动手做页面的素站,中间不需要人工点一次后台。

速览:

  • 它是一个模板仓库:自研主题(约 1400 行代码,无父主题)+ 三个 mu-plugin + 十件基础层插件,Docker Compose 一键起环境;
  • bin/setup.sh 幂等初始化:装核心、装插件、播种页面和询盘表单,重跑不毁已有定制;
  • 后台按客户视角改造:仪表盘默认模块与第三方推广横幅全部清掉,侧边栏只留 6 个日常菜单;
  • 安全默认值出厂即带:登录口改专属地址加限流、XML-RPC 关闭、用户枚举三条路全堵;
  • 它是我们内部交付工具,不公开售卖,但所有 WordPress 建站项目都从它起步。

它是什么:模板仓库,不是建站插件

arsh-wordpress-starter 是一个 Git 模板仓库,内容分三块。第一块是自研的 arsh-starter 主题,约 1400 行代码,不依赖任何父主题,提供吸顶页眉、移动端抽屉导航、页脚双列(左版权右导航)和页面、文章、列表、404 这几个基础模板。设计令牌全部集中在 CSS 的 :root 里,客户项目要换风格,改颜色和字体变量就是改一处。

第二块是三个 mu-plugin(共 197 行),分别管后台仪表盘、后台菜单和安全加固,下一节展开。第三块是插件清单和初始化脚本,规定每个新站必装哪十件插件、装完是什么配置。

本地环境用 Docker Compose 拉起四个服务:WordPress(PHP 8.3)、MySQL 8.4、phpMyAdmin 和 WP-CLI。这份配置也进了仓库,新项目不需要再自己拼容器。

也要说明它不是什么。它不是付费建站插件,不是页面生成器,也不是 SaaS。客户拿到的不是「拖拽出一个网站」的能力,而是一个骨架完好的素站,页面由我们按行业定制。克隆完的素站长这样,四个基础页、导航菜单和询盘表单都已经就位:

starter 播种完成后的 Contact 页面:页眉导航、询盘表单与页脚就位

图:播种完成后的素站 Contact 页,询盘表单已经嵌好,文案和联系信息留作占位,等项目替换。

一条 setup.sh 背后做了什么

初始化只有两条命令,cp .env.example .env 和 bin/setup.sh。脚本按顺序做七件事:

  1. 启动容器,等数据库健康检查通过;
  2. 安装 WordPress 核心(站点语言 en_US,管理员后台另装中文语言包);
  3. 激活自研主题;
  4. 预装十件基础层插件并全部激活;
  5. 写入默认配置:编辑器锁死经典版、评论和引用默认关闭、打开页面缓存;
  6. 播种初始内容:Home、About、News、Contact 四个页面,主菜单和页脚菜单,一张 CF7 询盘表单自动嵌入 Contact 页,外加一篇可删的占位文章;
  7. 手动写入 .htaccess,把固定链接设为文章名,让伪静态立即可用。

第六步值得多说一句。询盘是外贸站的核心转化路径,所以表单不是留给客户去装的,播种脚本直接建好一张通用询盘表单(姓名、邮箱、公司、留言四个字段),配好邮件模板嵌进 Contact 页。表单发件人用站点域名自己的地址,询盘人的邮箱放进 Reply-To,进件和回信两头都顺。项目起步时询盘动线就是通的,剩下的只是按行业增删字段。

「幂等」是这份脚本最重要的性质。每个环节都先判断再执行:页面按 slug 判重,表单按标题判重,菜单按名称判重。你跑了一半去改了配置,或者客户用了一阵之后重新跑一遍,已有的内容不会被覆盖。这让它既是初始化工具,也是恢复工具。

十件基础层插件,只管询盘、SEO、安全和速度

插件清单分基础层和按需层。基础层十件随脚本预装,每件都按同一个标准挑的:免费、无升级弹窗、能长期不折腾。

插件管什么
Contact Form 7询盘表单,B2B 站的核心转化路径
Flamingo询盘落库存档,邮件丢了也有底
FluentSMTP发信走 SMTP/API 而非默认 mail(),自带发送日志
SEOPresssitemap、meta、schema,轻量无 upsell
Limit Login Attempts Reloaded登录限流,挡密码爆破
WPS Hide Login登录入口改成专属地址
WP Super Cache页面缓存(LiteSpeed 主机则换 LiteSpeed Cache)
Classic Editor客户只写文章,经典编辑器防止误改页面结构
Site Kit by GoogleGA4、Search Console、PageSpeed 官方一站接入
Converter for Media图片转 WebP/AVIF,自托管免费无额度

有几个选择值得解释。询盘数据必须留在自己库里,所以 CF7 配 Flamingo,邮件服务器出问题询盘记录也不丢。发信必须走 API 或 SMTP,因为 WordPress 默认的 PHP mail() 在外贸服务器上基本进垃圾箱。编辑器锁成经典版是个反直觉但重要的决定。页面结构由开发侧维护,客户日常只写新闻,经典编辑器砍掉了误删整页布局的可能。

按需层按客户业务再装:机器翻译兜底用 GTranslate,重点语种市场且有人维护翻译就换 Polylang;Chaty 加 WhatsApp 悬浮按钮;纯询盘站不装 WooCommerce,要上产品目录才加。多件功能重叠的安全插件不可叠加,要上 Solid Security 就整体替换基础层的登录加固两件。

starter 预装的十件基础层插件全部启用

图:新站后台的插件列表,十件基础层插件全部激活,版本随 WordPress 官方源保持最新。

后台改造:客户看到的每一个界面都过筛

这一层是三个 mu-plugin,选 mu-plugin 而不是普通插件本身就是原理的一部分。must-use 插件在后台没有「停用」按钮,客户改不坏,也不占后台插件列表的注意力。

仪表盘清场。 WordPress 默认的仪表盘塞着概览、动态、快速草稿、站点健康、活动及新闻五个模块,外加一个欢迎面板,对每天只来发文章、看询盘的客户全是噪音。这些全部移除。第三方插件的推广横幅(「感谢安装」「去好评」「升级 Pro」)是另一类噪音,统一在渲染前摘除;核心的更新、维护、恢复模式这类关键提示走白名单照常显示,插件自己的功能性小工具(比如登录限流的失败统计)也不受影响。发信统计固定在仪表盘第二位,客户进来第一眼就能看到询盘邮件的发信状态。

侧边栏瘦身。 菜单按客户日常动线重排,从上到下只剩仪表盘、文章、媒体、Flamingo(询盘收件箱)、Contact(表单)、Site Kit(流量)六项。外观、插件、用户、工具、设置、评论、页面、SEO 配置、登录加固这些运维向菜单全部隐藏,共九项加一个更新子页。隐藏不等于禁用,URL 直达仍可访问,我们运维走 WP-CLI,不依赖后台菜单。

改造后的 WordPress 后台仪表盘:侧边栏只剩六项日常菜单,核心更新提示照常显示

图:改造后的仪表盘。默认模块和推广横幅已经不见,留下登录限流统计和发信统计两个业务组件;注意顶部的核心更新提示照常显示,那走的是白名单。

改造的标准很简单:客户后台只有三件事要做,看询盘、写文章、看流量。凡是服务这三件事之外的东西,要么藏起来,要么挡掉。

安全默认值:起步就绕开常见攻击面

WordPress 被打,绝大多数打的是默认安装留下的口子。这份 starter 把堵口子的动作做成了出厂配置,新站激活即生效,不依赖有人记得去设置。我们在《WordPress 登录被爆破:关掉这两扇门》里拆过攻击原理,这里的区别是那些手动动作现在随每个新站自动完成。

登录层由两件插件负责:入口改到专属地址,默认的 wp-login.php 不再可用;登录尝试限流,密码字典撞不动。mu-plugin 再管登录页之外的四件事。XML-RPC 整体关闭,方法表直接清空,连配套的发现链接一并去掉,扫描器探不到可用方法。wp_head 和订阅源不再输出 WordPress 版本号,版本落后时不给扫描器送瞄准点。用户枚举三条路一起堵:?author=N 探测和作者归档都重定向回首页,未登录访问 REST 用户列表直接 404,拖库式的用户名收集拿不到第一个用户名。最后,评论和引用通知全站关闭,外贸 B2B 站没有评论场景,关掉总闸让机器人无处灌垃圾。

这些配置不神秘,单条都不难做。starter 的价值在于它们不再依赖记忆,第一百个新站和第一个新站的默认姿势完全一致。

从 starter 到客户上线

开一个新项目的完整流程是五步:复制仓库重新 git init;全局替换主题目录名、文本域和容器名,统一换成客户标识;改 .env 里的端口、后台密码和站点标题;跑 bin/setup.sh;从按需层挑业务插件,开始按行业写页面模板和样式。仓库里另有一份上线清单,把本地默认密码更换、调试开关关闭、缓存生效确认、首次备份这些容易漏的事逐条列好,部署时过一遍。

页面板块有意不预装。素站的页面只有占位文案,因为板块是行业差异,机械厂的首页和食品厂的首页不该长一样。仓库里留了一份外贸 B2B 的常用板块清单,从信任条、产品矩阵到 FAQ,每个项目从那里挑增删,再落到主题模板里。清单只有一条原则,每个板块要么服务信任、要么服务转化,两者都不占的不做。

小结

arsh-wordpress-starter 管的是下限。每个 WordPress 外贸建站项目,起步就是同一套安全默认、同一个干净后台、同一条可重复的交付流程,这些不再依赖某次记忆或手感。上限留给每个项目自己,行业的页面板块、字段和风格,都是在这份素站之上长出来的。它是内部工具,不公开分发,但我们的每一个 WordPress 客户站都从它起步。

相关文章

这篇文章帮到你了吗?

有疑问、发现错误,或想聊聊你的实践。 每一条反馈我们都会认真读。

想聊聊你的项目?

文中遇到的问题,我们大多亲手踩过、修过。安许科技帮中小企业做 Web 系统、桌面软件与 AI 辅助交付,远程协作、按项目报价。