AI要約
WPForms 1.9.9 では WordPress Abilities API を基盤とした REST API が導入され、WPForms 1.10.2 ではオプトインの書き込みサポートが追加されました。フォームの一覧表示、フォーム設定の取得、エントリーの取得と検索、フォーム統計情報の取得が可能です。書き込みアクセスが有効になると、フォームの作成、フィールドの追加と更新、安全なフォーム設定の更新も行えます。すべての機能は、任意の HTTP クライアント、コマンドライン、独自の PHP コード、または Model Context Protocol (MCP) を話す AI アシスタントから利用できます。
「WPForms REST API」で検索してここにたどり着いた場合、それがこれです。個別の REST API は存在しません。Abilities API との統合が、WPForms が HTTP 経由でデータを公開する方法です。
Abilities API とは
Abilities API は、WordPress 6.9 で追加された WordPress コア機能です。プラグインは、名前、入力スキーマ、出力スキーマ、および権限コールバックを持つ個別の権限(abilities と呼ばれます)を宣言できます。WordPress は、登録されたすべての能力を REST API で /wp-json/wp-abilities/v1/abilities/<ability>/run で自動的に公開し、公式 MCP アダプタープラグインを通じて MCP 互換の AI クライアントにも公開します。
WPForms は wpforms/ 名前空間の下に一連の機能(abilities)を登録します。読み取り機能は WPForms 1.9.9 以降利用可能です。WPForms 1.10.2 では書き込み機能が追加されましたが、デフォルトでは無効になっています(下記 書き込みアクセスを有効にする を参照)。各機能は管理画面で使用されるのと同じ WPForms の権限チェック(wpforms_current_user_can())を実行するため、REST および MCP のインターフェースは、新しいモデルを導入するのではなく、既存の権限モデルを継承します。
要件:
- WordPress 6.9 以降
- 読み取り機能には WPForms Lite または Pro 1.9.9 以降、書き込み機能には 1.10.2 以降が必要です(一部の機能は Pro のみ利用可能。以下のリファレンステーブルを参照)。
- MCP クライアントの場合: wordpress/mcp-adapter プラグイン
能力の呼び出し
各能力は 2 つのトランスポートを通じて呼び出すことができます。結果は同一ですので、呼び出し環境に適した方を選択してください。
REST API
認証されたリクエストを /wp-json/wp-abilities/v1/abilities/<ability>/run に送信します。HTTP メソッドは機能によって異なります。読み取り機能は GET を使用し、書き込み機能は POST を使用します。間違ったメソッドで機能を呼び出すと 405 Method Not Allowed が返されます。
注意: 読み取り機能(GET)は、input キーの下に角括弧で囲まれたクエリ文字列フィールドとしてパラメータを受け取ります。例: input[limit]=10&input[status]=publish。クライアントが自動的に行わない場合は、角括弧を URL エンコードしてください([ の場合は %5B、] の場合は %5D)。書き込み機能(POST)は、リクエストボディの input キーの下に JSON オブジェクトとして同じパラメータを受け取ります。PHP トランスポートは両方を同じように処理します。execute() に連想配列を渡します。
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/list-forms/run?input%5Blimit%5D=10&input%5Bstatus%5D=publish"
PHP
wp_abilities_api_init アクションが発火した後で実行される任意のプラグイン、テーマ、またはカスタムコードから、wp_get_ability() で能力を取得し、その execute() メソッドを呼び出します。入力は連想配列(各能力のパラメータ表に記載されているのと同じ名前)として渡します。
$ability = wp_get_ability( 'wpforms/list-forms' );
if ( $ability ) {
$result = $ability->execute(
[
'limit' => 10,
'status' => 'publish',
]
);
if ( is_wp_error( $result ) ) {
// Handle error.
return;
}
// $result['forms'] array of form summaries
// $result['total'] total count (integer)
}
認証
REST トランスポートは標準の WordPress 認証を使用します。外部クライアントに推奨される方法は、WordPress コアに組み込まれており、追加のプラグインを必要としないアプリケーションパスワードです。
アプリケーションパスワードの生成
- 呼び出しを実行する WordPress ユーザーとしてサインインします。
- ユーザー » プロフィール に移動し、アプリケーションパスワード セクションまでスクロールします。
- 統合の名前を入力し、新しいアプリケーションパスワードを追加をクリックします。
- 生成されたパスワードをコピーします。WordPressでは一度しか表示されません。
プログラムでアプリケーションパスワードを管理するためのRESTエンドポイントを含む、より詳細なリファレンスについては、WordPressコアチームのアプリケーションパスワード統合ガイドを参照してください。
認証情報の送信
ユーザー名とアプリケーションパスワードを、すべてのリクエストでHTTP Basic認証として渡します。
curlを使用する場合
このドキュメントの例をそのまま実行できるように、サイトURLを環境変数として設定します。
export WP_SITE="https://your-wordpress-site.com"
次に、すべてのcurlコマンドに-uフラグを追加します。フラグの値は、ユーザー名、コロン、アプリケーションパスワード(スペースなし)です。
Postman、Insomnia、またはその他のクライアントを使用する場合
リクエストの認証タイプをBasic認証に設定し、ユーザー名とアプリケーションパスワードを提供します。クライアントがエンコーディングを処理します。
ヘッダーを手動で設定する
認証情報をbase64エンコードされたAuthorizationヘッダーとして送信します。
ユーザー名とアプリケーションパスワードをコロン(スペースなし)で区切られた単一の文字列に結合し、選択したツール(base64コマンド、オンラインエンコーダー、または言語の標準ライブラリ)を使用して結果をbase64エンコードします。エンコードされた値を、Authorization: Basic <encoded>の形式で、すべてのリクエストのAuthorizationヘッダーとして送信します。
このドキュメントの残りの部分のリクエスト例では、読みやすさのために認証フラグを省略しています。すべての実際のリクエストに-uフラグ(またはAuthorizationヘッダー)を追加してください。そうしないと、APIは401 Unauthorizedを返します。
書き込みアクセスを有効にする
読み取り機能は常に利用可能です。書き込み機能(wpforms/create-form、wpforms/add-field、wpforms/update-field、wpforms/update-form-settings)はデフォルトで無効になっており、実行される前に有効にする必要があります。有効にする方法は 2 つありますが、フィルターが最終的な決定権を持ちます。
コードで書き込みを有効にする
wpforms_integrations_abilities_allow_write フィルターを使用して、プログラムで書き込みを有効にします。
add_filter( 'wpforms_integrations_abilities_allow_write', '__return_true' );
このフィルターは、コードなしのトグルを双方向にオーバーライドします。true を返すと、トグルがオフの場合でも書き込みが有効になり、false を返すと、トグルがオンの場合でも無効になります。これにより、既存の開発者のセットアップは変更されずに機能し続けます。
コードなしで書き込みを有効にする
サイトオーナーは、WPForms » Tools » AI MCP から MCP書き込みアクセスを有効にする トグルを使用して書き込みを有効にできます。これは、wpforms_settings オプションの ai-mcp-write-enabled キーに永続化されます。上記のフィルターは、このトグルよりも優先されます。完全なウォークスルーについては、AIアシスタントとのWPFormsの使用 を参照してください。
注意: 書き込みが無効になっている間、書き込み機能はMCP検出から非表示になり、実行しようとするとコード wpforms_writes_disabled を持つ 403 が返されます。入力検証は書き込みゲートの前に実行されるため、無効な入力は書き込みが無効な場合でも 400 を返します。
権限
各機能は、実行前に特定のWPForms権限をチェックします。チェックに失敗すると、HTTPステータス403のWP_Errorが返されます。
| 機能 | 権限 |
|---|---|
wpforms/list-forms | view_forms |
wpforms/get-form | view_form_single |
wpforms/get-form-stats (Lite) | view_form_single |
wpforms/get-form-stats (Pro) | view_entries_form_single |
wpforms/get-entry-summaries | view_entries_form_single |
wpforms/get-entry | view_entry_single |
wpforms/search-entries (form_idあり) | view_entries_form_single |
wpforms/search-entries (form_idなし) | エントリーを表示 |
WPForms 1.10.2 で追加された書き込み機能は、同じ機能モデルを強制します。wpforms/create-form はフォームを作成する機能が必要であり、wpforms/add-field、wpforms/update-field、および wpforms/update-form-settings は対象フォームを編集する機能が必要です。チェックに失敗すると、HTTPステータス 403 を持つ WP_Error が返されます。書き込み機能は、上記のように書き込みアクセスが有効になっていることも必要とします。
機能リファレンス
読み取り機能はべき等であり、繰り返し呼び出しても安全です。WPForms 1.10.2 で追加された書き込み機能は、フォームデータを作成または変更し、最初に書き込みアクセスが有効になっている必要があります。エラーは、code、message、および data.status フィールドを持つ JSON にシリアル化された WP_Error オブジェクトとして返されます。
wpforms/list-forms
フォームを要約メタデータとともに一覧表示します。LiteおよびProで利用可能です。
パラメーター
| 名前 | タイプ | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
ステータス | 文字列 | いいえ | 公開 | フォームのステータス。公開、下書き、ゴミ箱のいずれか。 |
制限 | 整数 | いいえ | 20 | 返されるフォームの最大数。範囲は1から100です。 |
オフセット | 整数 | いいえ | 0 | スキップするフォームの数。 |
リクエスト例
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/list-forms/run?input%5Blimit%5D=10&input%5Bstatus%5D=publish"
レスポンス例
{
"forms": [
{
"id": 123,
"title": "Contact Form",
"status": "publish",
"created": "2026-01-27 10:00:00",
"modified": "2026-02-15 14:30:00",
"author": 1
}
],
"total": 5
}
wpforms/get-form
フォームの設定の厳選されたサブセット、およびオプションでフィールド構成を含む単一のフォームを取得します。LiteおよびProで利用可能です。
パラメーター
| 名前 | タイプ | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
フォームID | 整数 | はい | なし | 取得するフォームのID。 |
フィールドを含める | ブール値 | いいえ | true | フォームのフィールド構成をレスポンスに含めます。 |
リクエスト例
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/get-form/run?input%5Bform_id%5D=123&input%5Binclude_fields%5D=true"
レスポンス例
{
"id": 123,
"title": "Contact Form",
"status": "publish",
"created": "2026-01-27 10:00:00",
"modified": "2026-02-15 14:30:00",
"author": 1,
"settings": {
"form_title": "Contact Form",
"form_desc": "Get in touch with us",
"submit_text": "Submit",
"ajax_submit": true,
"honeypot": true,
"antispam": true
},
"fields": [
{
"id": 1,
"type": "text",
"label": "Name",
"description": "",
"required": true,
"size": "medium"
}
]
}
この機能によって返されるsettingsオブジェクトは、厳選された非機密性のサブセット(タイトル、説明、送信テキスト、AJAX送信フラグ、ハニーポット、スパム防止)です。通知、確認、統合の設定は公開されません。
wpforms/get-form-stats
フォームの送信統計を返します。LiteとProではレスポンスの形状が異なります。
パラメーター
| 名前 | タイプ | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
フォームID | 整数 | はい | なし | フォームのID。 |
リクエスト例
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/get-form-stats/run?input%5Bform_id%5D=123"
Liteレスポンス
{
"form_id": 123,
"entries_available": false,
"message": "Entry statistics require WPForms Pro. Upgrade to access detailed form submission data."
}
Proレスポンス
{
"form_id": 123,
"total_entries": 156,
"unread_entries": 12,
"starred_entries": 8,
"entries_available": true
}
wpforms/get-entry-summaries
単一フォームのエントリ概要のページネーションされたリスト。Proのみ。
パラメーター
| 名前 | タイプ | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
フォームID | 整数 | はい | なし | エントリを取得するフォームのID。 |
ステータス | 文字列 | いいえ | "" | partial、abandoned、spam、trashのいずれか。空の場合はすべての完了したエントリを返します。 |
タイプ | 文字列 | いいえ | "" | read、unread、starredのいずれか。 |
フィールドを含める | ブール値 | いいえ | false | 各エントリのフィールド値をレスポンスに含めます。 |
制限 | 整数 | いいえ | 20 | 返されるエントリの最大数。範囲は1から100です。 |
オフセット | 整数 | いいえ | 0 | スキップするエントリの数。 |
リクエスト例
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/get-entry-summaries/run?input%5Bform_id%5D=123&input%5Btype%5D=unread&input%5Blimit%5D=20"
レスポンス例
{
"entries": [
{
"id": 456,
"form_id": 123,
"date": "2026-02-15 14:32:10",
"status": "",
"viewed": false,
"starred": true
}
],
"total": 15,
"form_id": 123
}
wpforms/get-entry
IDで単一のエントリを取得します。すべてのフィールド値が含まれます。Proのみ。
パラメーター
| 名前 | タイプ | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
entry_id | 整数 | はい | なし | 取得するエントリのID。 |
フィールドを含める | ブール値 | いいえ | true | エントリのフィールド値をレスポンスに含めます。 |
リクエスト例
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/get-entry/run?input%5Bentry_id%5D=456"
レスポンス例
{
"id": 456,
"form_id": 123,
"date": "2026-02-15 14:32:10",
"modified": "2026-02-15 15:00:00",
"status": "",
"viewed": true,
"starred": false,
"ip_address": "192.168.1.100",
"fields": [
{
"id": 1,
"name": "Name",
"value": "John Doe",
"type": "text"
}
]
}
レスポンスのIPアドレスはマスクできます。サイトのコードに
add_filter( 'wpforms_abilities_mask_ip_address', '__return_true' )を追加してください。有効にすると、IPv4アドレスの最後の3つのオクテットがアスタリスクに置き換えられます(例:***.***.***.100)。
wpforms/search-entries
フルテキスト、フィールド固有、ステータス、日付範囲フィルターを使用して、1つまたはすべてのフォームのエントリを検索します。Proのみ。
パラメーター
| 名前 | タイプ | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
フォームID | 整数 | いいえ | なし | 検索を単一のフォームに制限します。省略すると、すべてのフォームを検索します。 |
search | 文字列 | いいえ | "" | すべてのエントリフィールドに対して一致するフルテキストクエリ。 |
field_id | 整数 | いいえ | なし | 検索を特定のフィールドIDに制限します。field_valueと組み合わせて使用します。 |
field_value | 文字列 | いいえ | なし | field_idで指定されたフィールドで一致する正確な値。 |
date_from | 文字列 | いいえ | なし | 日付範囲の開始、形式YYYY-MM-DD。 |
date_to | 文字列 | いいえ | なし | 日付範囲の終了、形式YYYY-MM-DD。 |
ステータス | 文字列 | いいえ | "" | partial、abandoned、spam、trashのいずれか。 |
タイプ | 文字列 | いいえ | "" | read、unread、starredのいずれか。 |
フィールドを含める | ブール値 | いいえ | true | エントリフィールド値をレスポンスに含めます。 |
制限 | 整数 | いいえ | 20 | 1ページあたりの最大エントリ数。範囲は1から100です。 |
ページ | 整数 | いいえ | 1 | ページ番号。この機能は、offsetを使用するlist-formsおよびget-entry-summariesとは異なり、ページベースのページネーションを使用することに注意してください。 |
並べ替え順序 | 文字列 | いいえ | 日付 | entry_id、date、statusのいずれか。 |
順序 | 文字列 | いいえ | 降順 | ASC、DESCのいずれか。 |
リクエスト例
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/search-entries/run?input%5Bform_id%5D=5&input%5Bsearch%5D=john%40example.com&input%5Bpage%5D=1&input%5Blimit%5D=20"
レスポンス例
{
"entries": [
{
"id": 142,
"form_id": 5,
"date": "2026-02-15 14:32:10",
"status": "",
"viewed": false,
"starred": true,
"fields": [
{ "id": 1, "name": "Name", "value": "John Doe", "type": "text" },
{ "id": 2, "name": "Email", "value": "[email protected]", "type": "email" }
]
}
],
"total": 47,
"total_pages": 5,
"page": 1,
"limit": 20
}
以下の機能は WPForms 1.10.2 で追加されました。すべて書き込みアクセスが有効になっている必要があります(書き込みアクセスの有効化 を参照)。ただし、wpforms/describe-editing-schema は読み取り機能であり、書き込み機能が受け入れるものを検出するために使用されます。書き込み機能は、REST を介した POST リクエストとして、または PHP の execute() を介して実行されます。
wpforms/describe-editing-schema
このサイトで書き込み機能が受け入れるフィールドタイプとフォーム設定を返します。利用可能なフィールドタイプはライセンスレベルによって異なるため、最初に呼び出してください。Lite および Pro で利用可能です。
注意: REST では、この機能は GET であり、空でない入力オブジェクトが必要です。パラメーターなしで呼び出すと、メッセージ input is not of type object を持つ 400 が返されます。少なくとも空の角括弧を含むキーを含めてください。例: input%5B%5D=。PHP では、execute() に空の配列を渡します。
リクエスト例
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/describe-editing-schema/run?input%5B%5D="
応答例(一部)
{
"field_types": [
{
"type": "text",
"label": "Single Line Text",
"properties": [
{ "key": "label", "schema": { "type": "string" } },
{ "key": "required", "schema": { "type": "boolean" } },
{ "key": "size", "schema": { "type": "string", "enum": ["small", "medium", "large"] } },
{ "key": "placeholder", "schema": { "type": "string" } },
{ "key": "default_value", "schema": { "type": "string" } }
],
"required_props": []
},
{
"type": "select",
"label": "Dropdown",
"properties": [
{ "key": "choices", "schema": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": ["label"] } } },
{ "key": "style", "schema": { "type": "string", "enum": ["classic", "modern"] } }
],
"required_props": []
}
],
"form_settings": [
{ "key": "form_title", "schema": { "type": "string" }, "description": "The form title." },
{ "key": "form_desc", "schema": { "type": "string" }, "description": "The form description." },
{ "key": "submit_text", "schema": { "type": "string" }, "description": "The submit button label." }
]
}
Proでは、field_typesはtext、textarea、email、number、select、radio、checkbox、name、phone、date-time、file-uploadをリストします。Liteでは、セットは基本の8つです:text、textarea、email、number、select、radio、checkbox、name。スラッグはビルダーと一致するため、Dropdownフィールドはselect、Date / Timeフィールドはdate-timeです。
フィールドプロパティ
create-form、add-field、update-fieldの権限は、これらのフィールドプロパティを受け入れます。各プロパティは、describe-editing-schemaによって報告されるように、それを宣言するフィールドタイプにのみ適用されます。
| プロパティ | タイプ | 適用対象 | 説明 |
|---|---|---|---|
ラベル | 文字列 | すべてのタイプ | フィールドのラベル。 |
説明 | 文字列 | すべてのタイプ | フィールドの説明。 |
必須 | ブール値 | すべてのタイプ | フィールドが必須かどうか。 |
サイズ | 文字列 | すべてのタイプ | フィールドサイズ。small、medium、largeのいずれか。 |
ラベル非表示 | ブール値 | すべてのタイプ | フロントエンドでフィールドラベルを非表示にします。 |
プレースホルダー | 文字列 | text、textarea、email、number、phone | プレースホルダーテキスト。 |
デフォルト値 | 文字列 | text、textarea、email、number、phone | デフォルト値。 |
選択肢 | array | select、radio、checkbox | { "label": "...", "value": "..." }オブジェクトの順序付けられたリスト。valueはオプションで、省略された場合はラベルから派生します。 |
スタイル | 文字列 | select、file-upload | 表示スタイル。classic、modernのいずれか。 |
入力列 | 文字列 | radio、checkbox | 列レイアウト。""、inline、2、3のいずれか。 |
拡張子 | 文字列 | ファイルアップロード | 許可されたファイル拡張子のカンマ区切りリスト。 |
最大サイズ | 整数 | ファイルアップロード | 最大ファイルサイズ。最小1。 |
最大ファイル数 | 整数 | ファイルアップロード | 最大ファイル数。最小1。 |
メディアライブラリ | ブール値 | ファイルアップロード | アップロードをWordPressメディアライブラリに保存します。 |
wpforms/create-form
オプションのフィールドセットと設定を使用して、新しいフォームを1回の呼び出しで作成します。LiteおよびProで利用可能です。
パラメーター
| 名前 | タイプ | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
タイトル | 文字列 | はい | なし | フォームのタイトル。 |
フィールド | array | いいえ | なし | 初期フィールド。各項目には、そのタイプに応じたtypeとフィールドプロパティが必要です。 |
設定 | オブジェクト | いいえ | なし | 初期設定。form_title、form_desc、submit_textの1つ以上。 |
注意: 入力スキーマはadditionalPropertiesをfalseに設定しているため、トップレベルではtitle、fields、settingsのみが受け入れられます。トップレベルのdescriptionキーは400で拒否されます。フォームの説明は、代わりにsettings.form_descで設定してください。
リクエスト例
$ability = wp_get_ability( 'wpforms/create-form' );
$result = $ability->execute(
[
'title' => 'Job Application',
'fields' => [
[ 'type' => 'name', 'label' => 'Your Name', 'required' => true ],
[ 'type' => 'email', 'label' => 'Email', 'required' => true ],
[ 'type' => 'select', 'label' => 'Position', 'choices' => [ [ 'label' => 'Baker' ], [ 'label' => 'Cashier' ] ] ],
],
'settings' => [
'form_title' => 'Job Application',
'form_desc' => 'Apply to join our team.',
'submit_text' => 'Apply Now',
],
]
);
レスポンス例
{
"form_id": 1102,
"fields": [
{ "id": 0, "type": "name" },
{ "id": 1, "type": "email" },
{ "id": 2, "type": "select" }
]
}
wpforms/add-field
既存のフォームに新しいフィールドを追加します。LiteおよびProで利用可能です。
パラメーター
| 名前 | タイプ | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
フォームID | 整数 | はい | なし | フィールドを追加するフォームのID。 |
タイプ | 文字列 | はい | なし | フィールドタイプのスラッグ。利用可能なタイプについては、describe-editing-schemaを呼び出してください。 |
form_idおよびtypeと共に、選択したタイプのフィールドプロパティを渡します(上記のフィールドプロパティテーブルを参照)。
リクエスト例
$ability = wp_get_ability( 'wpforms/add-field' );
$result = $ability->execute(
[
'form_id' => 1102,
'type' => 'phone',
'label' => 'Phone',
'required' => true,
]
);
レスポンス例
{
"form_id": 1102,
"field_id": 6,
"type": "phone"
}
注意: LiteでProタイプやサポートされていないタイプなど、サイトで利用できないフィールドタイプをリクエストすると、wpforms_field_type_unavailableコードで422が返されます。
wpforms/update-field
既存のフィールドのプロパティを更新します。LiteおよびProで利用可能です。
パラメーター
| 名前 | タイプ | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
フォームID | 整数 | はい | なし | フィールドが含まれているフォームのID。 |
field_id | 整数 | はい | なし | 更新するフィールドのID。 |
変更したいフィールドプロパティをform_idおよびfield_idと共に渡します(上記のフィールドプロパティテーブルを参照)。省略したプロパティは変更されません。choicesを送信すると、新しいリストが既存の選択肢にインデックスでマージされます。
リクエスト例
$ability = wp_get_ability( 'wpforms/update-field' );
$result = $ability->execute(
[
'form_id' => 1102,
'field_id' => 6,
'required' => true,
'placeholder' => 'e.g. 555-123-4567',
]
);
レスポンス例
{
"form_id": 1102,
"field_id": 6,
"updated": ["required", "placeholder"],
"ignored": []
}
wpforms/update-form-settings
フォームの安全な設定を更新します。v1ホワイトリストはform_title、form_desc、submit_textです。LiteおよびProで利用可能です。
パラメーター
| 名前 | タイプ | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
フォームID | 整数 | はい | なし | 更新するフォームのID。 |
設定 | オブジェクト | はい | なし | form_title、form_desc、submit_text のいずれか1つ以上。 |
リクエスト例
$ability = wp_get_ability( 'wpforms/update-form-settings' );
$result = $ability->execute(
[
'form_id' => 1102,
'settings' => [
'submit_text' => 'Send Application',
],
]
);
レスポンス例
{
"form_id": 1102,
"updated": ["submit_text"],
"ignored": []
}
ホワイトリストにないキーは、エラーを発生させる代わりに ignored 配列で返されます。たとえば、ajax_submit を送信すると、変更されずに ignored の下にリストされます。
MCPクライアントでのWPFormsの使用
読み取りアビリティは mcp.public が true に設定されて登録されるため、MCP互換のAIクライアント(Claude Desktop、Cursorなど)は、WordPressサイトが wordpress/mcp-adapter プラグインを介して接続されると自動的に検出します。書き込みアビリティと wpforms/describe-editing-schema は、書き込みアクセスが有効な場合にのみMCPに公開されます。書き込みが無効な場合、それらの mcp.public フラグは false になり、MCP検出から非表示になるため、アシスタントはWPForms書き込みツールを見つけられないと報告する場合があります。サイトが接続され、書き込みアクセスがオンになると、アビリティはクライアントのツールリストの WPForms カテゴリの下に表示され、REST APIで使用されるのと同じ権限コールバックを尊重します。
機能のプログラムによる検出
IDをハードコーディングする代わりに、サイトで利用可能な機能を列挙するには:
# List all registered abilities on the site
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities"
# Fetch the schema for a single ability
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/list-forms"
応答には、各機能のID、ラベル、説明、カテゴリ、および完全な入力および出力スキーマが含まれており、WPForms固有のサーフェスに関する事前知識なしに汎用クライアントを構築するのに十分な情報が含まれています。
書き込みアビリティは、書き込みアクセスが有効かどうかに関係なく、WPForms 1.10.2以降を実行しているサイトのこのインデックスに表示されます。ただし、それらの mcp.public フラグは書き込みアクセス状態を反映します。書き込みが有効な場合にのみ true になるため、MCPクライアントは書き込みツールを書き込みアクセスがオンになった後にのみ表示します。
フィールドレジストリの拡張
書き込みアビリティが受け入れるフィールドタイプとプロパティは、拡張可能なレジストリで定義されています。アドオンは2つのフィルターを介して独自のフィールドタイプとプロパティを登録できるため、カスタムフィールドタイプまたはアドオンフィールドタイプを create-form、add-field、および update-field で利用できるようになります。
wpforms_integrations_abilities_field_registry_typesは新しいフィールドタイプを登録します。各タイプはrequires値を介して可用性を宣言します。この値は文字列pro、アドオンのスラッグ、または呼び出し可能であり、必要なプロパティを指定できます。wpforms_integrations_abilities_field_registry_propertiesは、フィールドタイプが参照できる新しいプロパティ定義を提供します。
add_filter(
'wpforms_integrations_abilities_field_registry_types',
function ( $types ) {
// Register one or more field types here, then return the list.
return $types;
}
);
関連リンク
- AIアシスタントでのWPFormsの使用、AIアシスタントを接続するためのノーコードガイド
- WordPress機能APIの紹介 (developer.wordpress.org)
- GitHubのwordpress/mcp-adapter
- モデルコンテキストプロトコル