AumNexCart 是 WordPress 的产品目录插件。商品携带的是规格字段而不是结账流程: 访客把感兴趣的条目收集起来,发出一份结构化的询价。它不依赖特定主题,也不要求安装其他插件。
1. 这个插件带来什么
启用 AumNexCart 会注册一种内容类型 Products,以及它专用的一个分类法 Categories。 每件商品承载的是一份规格表所承载的东西 —— 标题、描述、图片、三种形态之一的价格, 以及任意数量的具名属性 —— 前台把它们渲染成归档页、筛选条和商品页。
取代结账的那一部分是询价清单。访客一边浏览一边把商品加进去、设定数量, 再通过你指定的那个页面上的表单一次性提交。清单保存在访客自己的浏览器里, 所以服务端没有任何东西因访客而异,整页缓存也不需要为它破例。
2. 安装
安装并启用插件。无需任何额外配置即可发布一个目录。
插件的菜单位置取决于站上还装了什么 —— 它会去找一个归属,而不是在已有的菜单旁边再立一个顶级菜单:
- 单独使用时,AumNexCart 添加一个 Products 菜单,设置在 Products → Settings 下。
- 启用 AumCreate 主题时,设置移到该主题的菜单下,名为 NexCart;目录本身仍保留自己的 Products 菜单。
两种情形下其余一切相同:同样的屏幕、同样的设置。

3. 添加一件商品
打开 Products → Add New。这个屏幕是普通的 WordPress 编辑器,外加插件添加的四个面板: Media Gallery、Product Attributes、Contact Actions 和 Price。

3.1 标题、描述和图片
标题和编辑器内容就是商品的名称和描述。特色图是商品的主图,用于归档页、商品页和询价清单。
Media Gallery 承载商品其余的媒体。条目从媒体库添加或填远程地址,可拖动排序, 第一条用作封面图。视频支持直接文件地址(.mp4、.webm),不支持嵌入代码。
3.2 商品属性
Product Attributes 面板承载任意数量的行,每行一个名称和一个值 —— Ref、Turnaround、 Minimum lot、Material,目录需要什么就写什么。名称由你定,插件不强加任何结构。 Add Parameter 添加一行,左侧的手柄用来调整顺序,顺序即它们在商品页上出现的顺序。
正是这些行让目录成为目录,而不是一列文章。它们在商品页上渲染成一张表格, 其中任何一项都可以成为筛选条件。面板会在行的下方列出当前哪些名称是可筛选的,这份名单读自设置。
3.3 价格
Price 面板提供三个选项:
- Price Range —— 最低价和最高价。只填最低价即为单一价格:填
480而最高价留空,前台显示€480。 - Custom Text —— 自由文本,用于不是数字的价格:From €120、POA、Free with a fabrication order。
- Do Not Show —— 商品上完全不显示价格。
货币符号以及它排在数字前还是数字后,在设置里对整个目录设定一次。
3.4 联系动作
Contact Actions 面板设定商品下方的按钮做什么。每个动作是三种之一:
- Email —— 打开访客的邮件客户端,主题里带上商品名称。
- WhatsApp —— 打开 WhatsApp,消息已预填。
- Custom —— 任意地址。
没有自己动作的商品会回退到目录级的默认动作,所以只有一个销售邮箱的目录设一次就够,不必每件商品都设。
4. 分类
商品由 Categories 组织 —— 这是它专用的一个分类法,和你文章用的分类是两回事。 分类可以嵌套、带描述,并有自己的归档地址。
归档页上的筛选条会列出分类,所以你给它们的结构,就是访客浏览时依循的结构。
5. 前台的目录
5.1 归档页
商品列在目录的归档地址上,默认是 /products/。每张卡片带封面图、分类、标题和价格。

5.2 筛选条
列表上方是一条栏,含搜索框、分类选择和排序方式。它就地筛选列表。

这条栏还能按属性筛选。哪些属性出现在那里,由 Settings → Filter 里逐个写出名称决定: 列出了 Ref、Turnaround、Minimum lot 的目录,这三项各得到一个筛选器。 只有你写出名称的那些会被建索引 —— 这正是这份名单放在设置里、而不是从商品身上推断出来的原因。
改完这份名单后,去 Tools 标签跑一次 Rebuild Attribute Index。 索引是在商品保存时建立的,所以改名单之前保存过的商品,还没有新增那一项的索引记录。
5.3 商品页
商品页显示封面图和相册、标题、分类、价格、以表格呈现的属性、描述,以及联系按钮。

6. 询价清单
一个没有结账的目录,仍然要回答「这个我要十二件、那个五件,整批报个价」。那就是询价清单。
6.1 商品怎么加进清单
每一次「加入」都是一个地址:询价页加上 ?aum_enquiry_add=<商品 id>。 带着这个参数的普通链接在完全没有 JavaScript 的情况下也成立 —— 访客落到询价页上,商品已经在里面了。前台脚本会就地升级这些链接, 所以在有 JavaScript 时点一下就加入,页面不跳转,角标同步更新。
6.2 清单保存在哪
清单保存在访客自己的浏览器里(localStorage)。服务端从不持有它。
这是一个有实际后果的刻意选择:你的站上没有任何页面因此而因访客不同, 所以整页缓存可以把每个页面发给所有人。保存在 cookie 或会话里的购物车恰恰相反 —— 除非专门告诉缓存,否则每个页面都变成按访客区分的,而这正是一个带缓存的站点 开始把一个买家的页面发给另一个买家的常见原因。
6.3 询价页
在 Settings → Enquiry 里指定一个页面,并把 [aum_nexcart_enquiry] 短代码放上去。 短代码会渲染清单、解析商品,并让买家设定数量。

[aum_nexcart_enquiry_link] 渲染一个指向该页面、带当前件数的链接,用在页头或菜单里。
6.4 把清单交给表单
询价页会把清单的纯文本摘要写进该页面上那个表单的一个隐藏字段。 字段名在 Settings → Enquiry 里设定,默认是 enquiry_items。
交接就到此为止。任何能把隐藏字段带进通知邮件的表单插件都能用, 因为耦合只有一个字段名,此外没有别的。
7. 称呼和地址
目录未必总是「products」的目录。Settings → General 设定一个条目和一个分类的单复数称呼, 这些名称用在后台菜单、面包屑和归档页标题里。
同一区块还设定地址片段。一个工序目录可以位于 /processes/,分类位于 /stages/。 保存时会刷新重写规则,新地址立即生效。
8. 批量操作
Settings → Tools 有三个操作。
- Export Products 把每件商品导出成一个 CSV。它同时是导入器的模板:列头就是导入器认的那些。
- Import Products 上传带同样列头的 CSV。只创建新商品,已有的原样不动,所以导入不会覆盖你的工作。 CSV 里引用的媒体必须是远程地址,导入器不上传本地文件。
- Rebuild Attribute Index 遍历每件商品,重写筛选条读取的那些记录。改完哪些属性可筛选之后跑它。

9. 迁移到 WooCommerce
Settings → Migration 把目录里的每件商品复制成一件新的 WooCommerce 商品。 原件原样保留,所以回头路就是停用 WooCommerce。
它的用途是目录长大到不再满足于询价、开始收款的那一天。准备好了再跑,不要拿它试水。
10. 覆盖模板
前台由插件自带的模板渲染。要改其中一个,把它从插件的 templates/ 目录复制到你主题里一个 名为 aum-nexcart/ 的目录,然后改那份副本。Settings → Advanced 会打印出当前这个站的两个路径。
主题里的副本优先于插件自带的那一份,并且在插件更新后仍然有效。
11. 扩展这个目录的插件和主题
以上任何一个都不安装,插件照常工作。
- AumViso —— 为商品补上面向搜索引擎的结构化数据,使目录页能把自己描述成一件商品而不是一篇文章。
- AumCreate 主题 —— 设置屏幕移到该主题自己的菜单下,而不是另立一处。其余一切不变。
- WooCommerce —— 只在第 9 节的迁移里用得上。
每一个都在运行时探测,移除其中之一,目录回到插件自身渲染的样子。
12. 设置项逐项
设置屏幕上的全部字段,按标签列出。所有字段都保存在同一个 WordPress 选项 aum_nexcart_settings 中。

12.1 General
| 字段 | 设定什么 |
|---|---|
| Currency Symbol | 每个价格旁显示的符号 |
| Currency Position | 排在数字前还是数字后 |
| What a product is called (singular) / Plural | 后台菜单、面包屑和归档页标题里使用的词 |
| Product URL Slug | 归档地址 —— /你的-slug/。保存时刷新重写规则 |
| What a category is called (singular) / Plural | 同上,针对分类 |
| Category URL Slug | 分类归档的地址 |
| Products Per Page | 归档页一页放多少件商品 |
12.2 Display
| 字段 | 设定什么 |
|---|---|
| Archive Columns | 一行排几件商品 |
| Display price on archive cards and product page | 是否显示价格 |
| Display the category label above product titles | 卡片上是否显示分类 |
| Disable plugin frontend stylesheet | 让标记保持无样式,交给自行设计样式的主题 |
12.3 Filter
| 字段 | 设定什么 |
|---|---|
| Filter Mode | 筛选条的行为方式 |
| Filterable Attribute Keys | 哪些属性名获得筛选器,并为此建索引 |
12.4 Contact
目录级的默认联系动作,供所有未自行定义动作的商品使用。 每一个是一个邮箱地址、一个 WhatsApp 号码,或一个地址,并附按钮上的文字。
12.5 Enquiry
| 字段 | 设定什么 |
|---|---|
| Enquiry page | 放置 [aum_nexcart_enquiry] 的那个页面 |
| Add button label | 商品尚未加入清单时按钮上的字 |
| Label once added | 加入之后的字 |
| Form field name | 清单被写入的那个隐藏字段 —— 默认 enquiry_items |
12.6 Tools、Migration、Advanced
这三个不带设置项。Tools 放 CSV 导出、CSV 导入和属性索引重建(第 8 节); Migration 放 WooCommerce 复制(第 9 节);Advanced 打印覆盖模板所需的两个路径(第 10 节)。
13. 排查
归档地址返回 404。 重写规则还没刷新。保存设置会刷新它们,访问设置 → 固定链接也会。
我加的属性没有出现筛选器。 先在 Settings → Filter 里写出它的名称, 再去 Tools 标签跑 Rebuild Attribute Index。在这个名称加入之前保存过的商品,还没有它的索引记录。
某件商品不显示价格。 它的 Price 面板选的是 Do Not Show, 或者整个目录的价格在 Settings → Display 里关掉了。
换一台设备后询价清单是空的。 清单保存在建立它的那个浏览器里。 它不是账号,也不会跟着访客在设备之间走。
询价摘要没有进到邮件里。 询价页上的表单需要一个隐藏字段,名称和 Settings → Enquiry 里的 Form field name 一致,而且该表单自己的通知要包含这个字段。