WordPress 7.0 引入了连接器 API——一个用于注册和管理外部服务连接的新框架。最初的重点是 AI 提供者,为 WordPress 提供了标准化的方式来处理 API 密钥管理、提供者发现以及配置 AI 服务的管理界面。
本文将介绍连接器API的具体功能、其底层工作原理,以及插件开发者需要了解的内容。
什么是连接器?
连接器代表与外部服务的连接。每个连接器都携带标准化元数据——显示名称、描述、标志、认证配置,以及与 WordPress.org 插件的可选关联。该系统目前主要支持通过API密钥认证的提供者,但架构设计为未来版本支持更多连接器类型。
WordPress 7.0 配备了三个特色连接器——Anthropic、Google 和 OpenAI——可通过新的设置→连接器界面访问,使安装过程更加无缝。
每个连接器都存储为一个关联数组,形状如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
人工智能服务提供者如何被自动发现
如果你是在构建一个与WP AI客户端集成的AI提供者插件,你不需要手动注册连接器。连接器 API 会自动从 WP AI 客户端的默认注册表中发现提供者,并创建具有正确元数据的连接器。
初始化过程中发生的事情如下:
- 内置连接器(Anthropic、Google、OpenAI)注册为硬编码默认值。
- 系统查询所有注册的提供者。
AiClient::defaultRegistry() - 对于每个提供者,元数据(名称、描述、标志、认证方法)会合并到默认数据之上,提供者注册表值优先。
- 该动作触发是为了让插件覆盖元数据或注册额外连接器。
wp_connectors_init
简而言之:如果你的 AI 提供者插件注册到 WP AI 客户端,连接器就是为你创建的。无需额外代码。
连接器管理>设置界面
注册连接器会出现在新的设置>连接器管理界面。屏幕会把每个连接器渲染成一张卡片,注册表数据则驱动显示的内容:
- 姓名
、描述和logo_url会在卡片上显示。 plugin.file— 该值是插件相对于插件目录的主要文件路径(例如 ,或 )。屏幕用它来检查关联插件是否已安装并激活,并显示相应的操作按钮。akismet/akismet.phphello.phpauthentication.credentials_url被呈现为链接,引导用户访问提供商的网站以获取API凭证。- 对于
api_key连接器,界面显示当前密钥源(环境变量、PHP 常量或数据库)和连接状态。
带有其他认证方法的连接器存储在 PHP 注册表中,并通过脚本模块数据公开,但目前需要客户端注册 JavaScript 才能实现自定义前端界面。
认证与API密钥管理
连接器支持两种认证方法:
api_key— 需要API密钥,可以通过环境变量、PHP常量或数据库(按顺序检查)提供。无— 无需认证。
认证方法(或)由与连接器注册的认证元数据决定。对于使用 ,服务提供者会通过模式 自动生成数据库设置名称。也可以用属性设置自定义名称。存储在数据库中的API密钥不加密,而是在用户界面中被掩蔽。加密问题正在后续工单中进行:。api_keynoneapi_keyconnectors_{$provider_type}_{$provider_id}_api_keysetting_name
对于 AI 提供者,环境变量和 PHP 常量有特定的命名规范:(例如,提供者映射到 )。对于其他类型的提供者,环境变量()和PHP常量()可以选择性地设置为任意值。{PROVIDER_ID}_API_KEYanthropicANTHROPIC_API_KEYenv_var_nameconstant_name
API 密钥源优先级
对于连接器,系统按以下顺序寻找设置值:api_key
- 环境变量——例如,
ANTHROPIC_API_KEY - PHP 常数——例如,
define( 'ANTHROPIC_API_KEY', 'sk-...' ); - 数据库——通过管理界面存储,例如: 背景设定
connectors_ai_anthropic_api_key
公共 API 功能
连接器 API 提供了三个用于查询注册表的公共函数。这些在之后可以获得。init
wp_is_connector_registered()
检查连接器是否注册:
1 2 3 |
|
wp_get_connector()
检索单个连接器的数据:
1 2 3 4 |
|
返回一个关联数组,键为:、,且可选地和。如果连接器未注册,它会退货。namedescriptiontypeauthenticationlogo_urlpluginnull
wp_get_connectors()
检索所有注册连接器,按连接器ID键入:
1 2 3 4 |
|
覆盖连接器元数据
在所有内置和自动发现连接器注册完毕后,动作才会触发。插件可以使用这个钩子覆盖现有连接器的元数据。wp_connectors_init
由于注册表拒绝重复的ID,覆盖需要执行一个取消注册、修改、寄存器的序列:
1 2 3 4 5 6 7 |
|
关于覆盖模式的关键点:
- 打电话前一定要确认——打电话给不存在的连接器会触发通知。
is_registered()unregister()unregister()_doing_it_wrong() unregister()返回连接器数据,你可以修改并传回给 。register()- 连接器ID必须与模式一致(仅限小写字母数字、下划线和连字符)。
/^[a-z0-9_-]+$/
登记方法
在回调中,实例提供以下方法:wp_connectors_initWP_Connector_Registry
| 方法 | 描述 |
|---|---|
register( $id, $args ) | 注册一个新的连接器。故障时返回连接器数据。null |
unregister( $id ) | 拆下连接器并返回其数据。如果找不到,可以退货。null |
is_registered( $id ) | 检查是否有连接器存在。 |
get_registered( $id ) | 检索单个连接器的数据。 |
get_all_registered() | 检索所有注册连接器。 |
在回调之外,使用公共API函数(, , ),而不是直接访问注册表。wp_connectors_initwp_get_connector()wp_get_connectors()wp_is_connector_registered()
初始化生命周期
了解初始化序列有助于决定挂钩位置:
行动过程中,奔跑和:init_wp_connectors_init()
- 这样就形成了单例。
WP_Connector_Registry - 注册内置连接器(Anthropic、Google、OpenAI)并带有硬编码默认值。
- 自动发现WP AI客户端注册表中的提供者,并在默认情况下合并其元数据。
- 触发
wp_connectors_init动作——插件覆盖元数据或注册额外连接器。
该动作是修改注册表的唯一支持的入口点。尝试将注册表实例设置在外部会触发通知。wp_connectors_initinit_doing_it_wrong()
展望未来
WordPress 7.0 中的连接器 API 针对 AI 提供商进行了优化,但其底层架构设计是为扩展型而设计的。目前,只有带认证的连接器才能获得完整的管理员界面处理。PHP 注册表已经接受任何类型的连接器——缺少的是针对不同认证机制连接器的前端集成。api_key
预计未来发布将:
- 扩展支持,支持超越和的额外认证方法。
api_keynone - 提供更多内置的用户界面集成。
api_key - 为自定义连接器UI提供客户端JavaScript注册API。
当这些功能落实后,Action将成为注册新连接器类型的主要钩子。wp_connectors_init


