# WordPress 插件

> 在协会的 WordPress 网站上实现使用 Vimine 登录、会员卡和入会——无需编写代码。

URL: https://developers.vimine.network/zh-hans/guides/wordpress/

**Vimine** WordPress 插件在服务器端为协会网站提供三项基本功能（浏览器中没有令牌，也不依赖 JavaScript）：

- **使用 Vimine 登录**——会员用自己的账户登录（OAuth 2.1 加 PKCE；插件是一个机密客户端，在服务器上用 secret 交换授权码）；
- **会员卡**——已登录会员的会员卡，以带二维码的图片显示（`GET /v1/me/membership/card.svg`）；
- **入会**——协会的入会表单（嵌入）。

## 安装

1. 在 WordPress 中打开“插件 → 安装插件”，搜索“Vimine”，安装并启用：该插件已收录在 [WordPress.org 插件目录](https://wordpress.org/plugins/vimine/)中。
2. 在“开发者”页面中登记一个**机密**客户端。重定向 URI 请使用网站上“设置 → Vimine”中显示的地址（通常为 `https://yoursite/vimine-callback/`）；选择权限（至少 `profile:read membership:read`）。
3. 在“设置 → Vimine”中填入 client ID 和 secret（保存后 secret 不会再显示）。

:::note[更新]
WordPress 会像对待目录中的其他插件一样自动提示新版本，也可以在“插件”页面开启自动更新。通过本页面以前提供的 zip 文件安装的网站也会以同样的方式收到更新，无需重新安装，设置会被保留。
:::

## 使用

| 短代码 | 区块 | 作用 |
|---|---|---|
| `[vimine_signin label="" return_to="" scope=""]` | Vimine — 登录 | “使用 Vimine 登录”按钮；会员已登录时显示“退出”（撤销令牌，并同时退出 Vimine） |
| `[vimine_card]` | Vimine — 会员卡 | 已登录访客的会员卡；未登录时提示登录 |
| `[vimine_enroll slug="…" height="900" lang=""]` | Vimine — 入会表单 | 协会的入会表单，使用网站的语言（如果 Vimine 支持该语言，否则使用意大利语；可用 `lang` 指定）；对已有 Vimine 账户的人，提供“前往 Vimine 继续”，在新标签页中打开页面，一步即可入会（[为什么用新标签页](https://developers.vimine.network/zh-hans/guides/embed-and-verify/#已有-vimine-账户的人)） |
| `[vimine_events slug="…" filter="upcoming" limit="10"]` | Vimine — 活动 | 协会的活动及剩余名额（访客看到公开活动，已登录会员看到全部活动）；每个活动都链接到其在 Vimine 上的页面，在那里报名（[指南](https://developers.vimine.network/zh-hans/guides/events/)） |

这些区块位于编辑器的“小工具”分类下，选项与短代码相同。

## 会话的工作方式

从托管的登录页面返回后，插件交换授权码（使用 PKCE verifier 和 secret），把令牌保存在 WordPress 的 *transient* 中，只把会话 id 交给浏览器（HttpOnly Cookie，SameSite=Lax）。访问令牌借助刷新令牌自动续期；“退出”会撤销刷新令牌，并经过 Vimine 的 `/oauth/logout`，因此那里的会话也会结束。在该协会没有会员卡的会员会看到相应的提示；未开通 API 的协会会收到 `api_disabled`。

## 自定义

样式表非常精简，使用 `--vimine-accent` 和 `--vimine-accent-contrast` 变量；每个元素都带有 `vimine-…` 类名。如需更丰富的功能（在主题中显示会员数据、从管理系统办理入会），请使用插件的凭据直接调用 [API](https://developers.vimine.network/api/) 或[服务器 SDK](https://developers.vimine.network/zh-hans/sdk/server/)。
