WordPress 高级指南 — Soft8Soft
Description: 如何在后台发送表单和订单，以及通过 JavaScript 自定义 Verge3D for WordPress 插件。

# WordPress 高级指南

本指南包含有关如何在 WordPress 中使用 Verge3D 的更多深入主题。介绍了如何在后台发送订单和表单以及如何自定义插件。您还可以在此处找到正式的电子商务协议规范。有关基础主题，请参阅用户手册中的 WordPress 插件 章节。

## 目录

- 通过 REST API 在后台接收订单
  - 使用表单数据提交订单
  - 使用 JSON 提交订单
- 将表单发送到电子邮件
- 自定义电子商务表单
- 电子商务协议规范

#

## 通过 REST API 在后台接收订单

在某些情况下，您可能希望创建自定义的下单体验，而不是将用户重定向到订单页面。

假设您想创建一个基本的桌子定制器。您的数据可能如下所示：

`{ "user_name": "张三", "user_email": "zhangsan@example.com", "user_phone": "+8613800138000" "items": [ { "sku": "table_top_white", "quantity": 1 }, { "sku": "table_leg_brown", "quantity": 4 }, ] }`

您可以通过以下两种方式基于这些数据下单：

1. 使用带有常规表单数据的 POST 请求（版本 v1）
2. 使用带有 JSON 的 POST 请求（版本 v2）

#

### 使用表单数据提交订单

为此，您可以编写一个包含上述字段的 HTML 表单，然后直接提交或通过 发送数据 拼图提交到以下地址：

`https://WP_HOST/wp-json/verge3d/v1/place_order/`

其中 WP_HOST 是您的 WordPress 服务器主机名，例如 sandbox.soft8soft.com

使用拼图时，需要用户输入的表单字段（即 "user_name"、"user_email"、"user_phone"）可以按如下方式创建：

而带有产品 SKU 的订单项可以通过隐藏表单输入来组成：

可以在不重新加载整个页面的情况下提交表单，如下所示：

#

### 使用 JSON 提交订单

您可以通过创建 JavaScript 对象来组合此结构，然后通过 JavaScript fetch() 调用将其发送到服务器，但使用 字典 配合 发送数据 拼图可能更方便。

以 JSON 格式提交订单的 URL 地址为：

`https://WP_HOST/wp-json/verge3d/v2/place_order/`

其中 WP_HOST 是您的 WordPress 服务器主机名，例如 sandbox.soft8soft.com

例如，使用以下拼图来组合上面指定的订单：

电子商务选项卡中的 订单项 拼图可以在组合订单项时为您节省一些时间。

#

## 将表单发送到电子邮件

Verge3D for WordPress 提供了一项功能，允许您将自定义 HTML 表单获取的数据发送到管理设置中指定的电子邮件地址。例如，您可以使用此功能接收产品或服务的咨询或支持问题、实现预订、获取客户联系信息等。

提交自定义表单的 URL 地址为：

`https://WP_HOST/wp-json/verge3d/v1/send_form/`

其中 WP_HOST 是您的 WordPress 服务器主机名，例如 sandbox.soft8soft.com。

表单本身可以使用 HTML/CSS、拼图或网站构建器（如 Webflow）来实现。有关创建基于 HTML 的用户界面的更多信息，请参见此处。表单提交可以直接通过点击"提交"按钮进行，也可以通过 JavaScript/拼图间接进行（以避免页面重新加载）。

例如，使用拼图，您可以像这样在不重新加载页面的情况下发送表单（实际表单构建未显示）：

咨询表单库可以大大简化操作。以它作为您自己表单解决方案的基础。

#

## 自定义电子商务表单

要修改电子商务表单，请将 Verge3D 插件 templates 目录中的表单模板复制到您 WordPress 主题目录下的 verge3d 子目录中。

例如，如果您需要修改订单电子邮件模板：

`WORDPRESS/wp-content/plugins/verge3d/templates/order_email_body.php → THEME/verge3d`

其中 WORDPRESS 是您 WordPress 安装的根目录，THEME 是您当前主题的目录。

以下是您可以自定义的模板列表：

模板文件 | 描述
--- | ---
order_email_body.php | 订单电子邮件正文模板。此模板用于发送给您和您的客户的订单通知。
order_pdf.php | 订单电子邮件 PDF 附件模板。此模板用于生成将转换为 PDF 并附加到订单电子邮件中的 HTML 文件（例如报价单和发票）。
order_form.php | 订单表单模板。此表单显示在包含 [verge3d_order] 简码的页面上。
order_success.php | 订单被接受时显示的消息。
order_failed.php | 订单被拒绝时显示的消息。
payment_paypal.php | PayPal 支付处理页面。
send_form_email_body.php | 通过 REST API 生成的表单的电子邮件模板。

### 安全措施

在为电子商务应用使用自定义表单时，请确保正确转义客户发送的输出数据。请参阅以下指南获取更多信息。

#

## 电子商务协议规范

下订单和下订单 + 拼图使用以下协议来处理订单。订单从浏览器使用 HTTP POST 请求发送到服务器，包含以下参数：

POST 参数 | 描述
--- | ---
v3d_items | 订单项。一个 JSON 编码的订单项数组。
v3d_attachments[] | 订单附件。此可选值必须是表示订单附件的 Data URL 数组。

订单项具有以下格式之一，具体取决于您使用的拼图。对于下订单：

字段 | 描述
--- | ---
title | 订单项标题。
price | 订单项价格。
quantity | 订单项数量：单位数、重量、长度等。

对于下订单 +：

字段 | 描述
--- | ---
sku | 订单项 SKU（库存量单位）。此 SKU 用作 ID 从服务器检索产品信息。
quantity | 订单项数量：单位数、重量、长度等。

基于 REST API 的更高级协议使用以下参数集：

JSON 字段 | 描述
--- | ---
user_name | 客户全名（也用作账单姓名）。
user_email | 客户电子邮件地址。
user_phone | 客户电话号码。
user_comment | 可选的订单备注。
items | 订单项。一个包含订单项的数组。
attachments | 订单附件。此可选值必须是表示订单附件的 Data URL 数组。
user_address1 | 账单地址 — 第 1 行。要使用此字段，请在 常规 选项卡上激活 账单地址 选项。
user_address2 | 账单地址 — 第 2 行。要使用此字段，请在 常规 选项卡上激活 账单地址 选项。
user_city | 账单地址 — 城市。要使用此字段，请在 常规 选项卡上激活 账单地址 选项。
user_state | 账单地址 — 州、县或省。要使用此字段，请在 常规 选项卡上激活 账单地址 选项。
user_country | 账单地址 — 国家。要使用此字段，请在 常规 选项卡上激活 账单地址 选项。
user_postcode | 账单地址 — 邮政编码。要使用此字段，请在 常规 选项卡上激活 账单地址 选项。
shipping_address1 | 配送地址 — 第 1 行。要使用此字段，请在 常规 选项卡上激活 配送地址 选项。
shipping_address2 | 配送地址 — 第 2 行。要使用此字段，请在 常规 选项卡上激活 配送地址 选项。
shipping_city | 配送地址 — 城市。要使用此字段，请在 常规 选项卡上激活 配送地址 选项。
shipping_state | 配送地址 — 州、县或省。要使用此字段，请在 常规 选项卡上激活 配送地址 选项。
shipping_country | 配送地址 — 国家。要使用此字段，请在 常规 选项卡上激活 配送地址 选项。
shipping_postcode | 配送地址 — 邮政编码。要使用此字段，请在 常规 选项卡上激活 配送地址 选项。

## 有问题？

欢迎在论坛上提问！