AI Zusammenfassung
Mit WPForms 1.9.9 wurde eine schreibgeschützte REST-API eingeführt, die auf der WordPress-Abilities-API aufbaut. Sie können Formulare auflisten, Formularkonfigurationen abrufen, Einträge abrufen und durchsuchen sowie Formularstatistiken über jeden beliebigen HTTP-Client, die Befehlszeile, Ihren eigenen PHP-Code oder KI-Assistenten, die das Model Context Protocol (MCP) unterstützen, abrufen.
Wenn Sie nach „WPForms REST API“ gesucht haben und hier gelandet sind, sind Sie hier genau richtig. Es gibt keine separate REST-API; die Abilities-API-Integration ist die Art und Weise, wie WPForms seine Daten über HTTP bereitstellt.
Was ist die Abilities-API?
Die Abilities-API ist eine Kernfunktion von WordPress, die mit WordPress 6.9 eingeführt wurde. Sie ermöglicht es Plugins, einzelne Fähigkeiten (sogenannte Fähigkeiten) mit einem Namen, einem Eingabeschema, einem Ausgabeschema und einem Berechtigungs-Callback. WordPress stellt daraufhin jede registrierte Funktion automatisch über die REST-API unter /wp-json/wp-abilities/v1/abilities/<ability>/run sowie an MCP-kompatible KI-Clients über das offizielle MCP-Adapter-Plugin.
WPForms registriert eine Reihe von schreibgeschützten Funktionen unter dem wpforms/ Namensraum. Jede Funktion führt dieselben WPForms-Berechtigungsprüfungen durch, die auch im Admin-Bereich verwendet werden (wpforms_current_user_can()), sodass die REST- und MCP-Oberflächen das bestehende Berechtigungsmodell übernehmen, anstatt ein neues einzuführen.
Anforderungen:
- WordPress 6.9 oder höher
- WPForms Lite oder Pro 1.9.9 oder höher (einige Funktionen sind nur in der Pro-Version verfügbar; siehe die Übersichtstabelle unten)
- Für MCP-Kunden: das Plugin „wordpress/mcp-adapter “
Eine Fähigkeit aktivieren
Jede Funktion kann über zwei verschiedene Aufrufmethoden aufgerufen werden. Das Ergebnis ist identisch; wählen Sie diejenige, die am besten zur jeweiligen Aufrufumgebung passt.
REST-API
Eine authentifizierte GET Anfrage an /wp-json/wp-abilities/v1/abilities/<ability>/run. Da alle Funktionen von WPForms schreibgeschützt sind, nur GET wird akzeptiert; POST Ergebnisse 405 Method Not Allowed.
Anmerkung: Übergeben Sie Parameter als in Klammern gesetzte Query-String-Felder unter dem input Schlüssel, zum Beispiel input[limit]=10&input[status]=publish. Führe eine URL-Kodierung der Klammern durch, falls dein Client dies nicht automatisch übernimmt (%5B für [, %5D für ]).
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/list-forms/run?input%5Blimit%5D=10&input%5Bstatus%5D=publish"
PHP
Aus jedem Plugin, Theme oder benutzerdefinierten Code, der nach dem wp_abilities_api_init Die Aktion wurde ausgelöst, rufe die Fähigkeit mit wp_get_ability() und es execute() Methode. Übergebe die Eingabe als assoziatives Array von Parametern (mit denselben Namen, die in der Parametertabelle der jeweiligen Fähigkeit aufgeführt sind).
$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)
}
Authentifizierung
Der REST-Transport nutzt die Standard-Authentifizierung von WordPress. Die empfohlene Methode für externe Clients sind Anwendungspasswörter, die in den WordPress-Kern integriert sind und kein zusätzliches Plugin erfordern.
Ein Anwendungs-Passwort erstellen
- Melden Sie sich als der WordPress-Benutzer an, unter dessen Berechtigungen die Aufrufe ausgeführt werden sollen.
- Gehen Sie zu „Benutzer“ » „Profil“ und scrollen Sie zum Abschnitt „Anwendungspasswörter “.
- Geben Sie einen Namen für die Integration ein und klicken Sie auf „Neues Anwendungskennwort hinzufügen“.
- Kopieren Sie das generierte Passwort. WordPress zeigt es nur einmal an.
Weitere Informationen, einschließlich REST-Endpunkten zur programmgesteuerten Verwaltung von Anwendungskennwörtern, finden Sie im Leitfaden zur Integration von Anwendungskennwörtern des WordPress-Kernteams.
Übermittlung der Anmeldedaten
Übermittle bei jeder Anfrage den Benutzernamen und das Anwendungskennwort als HTTP-Basic-Authentifizierung.
Mit curl
Legen Sie die URL Ihrer Website als Umgebungsvariable fest, damit die Beispiele in dieser Dokumentation direkt ausgeführt werden können:
export WP_SITE="https://your-wordpress-site.com"
Dann füge das -u Flag bei jedem curl-Befehl. Der Wert des Flags besteht aus Ihrem Benutzernamen, gefolgt von einem Doppelpunkt und Ihrem Anwendungskennwort (ohne Leerzeichen).
Mit Postman, Insomnia oder anderen Clients
Stellen Sie den Authentifizierungstyp der Anfrage auf „Basic Auth“ ein und geben Sie Ihren Benutzernamen und Ihr Anwendungskennwort ein. Der Client übernimmt die Verschlüsselung für Sie.
Die Kopfzeile manuell festlegen
Senden Sie Ihre Anmeldedaten als Base64-kodierte Authorization Überschrift:
Füge deinen Benutzernamen und dein Anmeldekennwort zu einer einzigen Zeichenfolge zusammen, getrennt durch einen Doppelpunkt (ohne Leerzeichen), und verschlüssele das Ergebnis mit einem Tool deiner Wahl nach dem Base64-Verfahren (base64 Befehl, einen Online-Encoder oder die Standardbibliothek Ihrer Sprache). Senden Sie den kodierten Wert bei jeder Anfrage als Authorization Kopfzeile, in der Form Authorization: Basic <encoded>.
In den Beispielanfragen im weiteren Verlauf dieses Dokuments wird das Authentifizierungsflag der Übersichtlichkeit halber weggelassen. Fügen Sie das -u Flag (oder das Authorization (Header) an jede tatsächliche Anfrage, andernfalls gibt die API 401 Unauthorized.
Berechtigungen
Jede Funktion überprüft vor der Ausführung eine bestimmte WPForms-Funktion. Bei fehlgeschlagenen Überprüfungen wird ein WP_Error mit HTTP-Status 403.
| Fähigkeit | Fähigkeit |
|---|---|
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 (mit form_id) | view_entries_form_single |
wpforms/search-entries (ohne form_id) | view_entries |
Fähigkeitenübersicht
Alle Funktionen sind schreibgeschützt und idempotent. Fehler werden zurückgegeben als WP_Error Objekte, die mit code, messageund data.status Felder.
wpforms/Formulare auflisten
Listenformulare mit zusammenfassenden Metadaten. Verfügbar in den Versionen Lite und Pro.
Parameter
| Name | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
status | String | Nein | publish | Formularstatus. Einer von publish, draft, trash. |
limit | Ganzzahl | Nein | 20 | Maximale Anzahl der zurückzugebenden Formulare. Bereich: 1 bis 100. |
offset | Ganzzahl | Nein | 0 | Anzahl der zu überspringenden Formulare. |
Beispielanfrage
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/list-forms/run?input%5Blimit%5D=10&input%5Bstatus%5D=publish"
Beispielantwort
{
"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
Ein einzelnes Formular abrufen, einschließlich einer ausgewählten Teilmenge seiner Einstellungen und optional seiner Feldkonfiguration. Verfügbar in den Versionen Lite und Pro.
Parameter
| Name | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
form_id | Ganzzahl | Ja | - | Die ID des abzurufenden Formulars. |
include_fields | Boolescher Wert | Nein | true | Fügen Sie die Feldkonfiguration des Formulars in die Antwort ein. |
Beispielanfrage
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/get-form/run?input%5Bform_id%5D=123&input%5Binclude_fields%5D=true"
Beispielantwort
{
"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"
}
]
}
Die settings Das von dieser Funktion zurückgegebene Objekt ist eine kuratierte, nicht sensible Teilmenge (Titel, Beschreibung, Absendetext, AJAX-Absendeflag, Honeypot, Anti-Spam). Benachrichtigungs-, Bestätigungs- und Integrationseinstellungen werden nicht offengelegt.
wpforms/form-statistiken-abrufen
Statistiken zu den übermittelten Daten eines Formulars abrufen. Die Form der Antwort unterscheidet sich bei Lite und Pro.
Parameter
| Name | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
form_id | Ganzzahl | Ja | - | Die ID des Formulars. |
Beispielanfrage
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/get-form-stats/run?input%5Bform_id%5D=123"
Lite Response
{
"form_id": 123,
"entries_available": false,
"message": "Entry statistics require WPForms Pro. Upgrade to access detailed form submission data."
}
Pro Response
{
"form_id": 123,
"total_entries": 156,
"unread_entries": 12,
"starred_entries": 8,
"entries_available": true
}
wpforms/Eintragsübersichten abrufen
Seitenweise Liste der Zusammenfassungen der Einträge für ein einzelnes Formular. Nur in der Pro-Version.
Parameter
| Name | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
form_id | Ganzzahl | Ja | - | Die ID des Formulars, für das Einträge abgerufen werden sollen. |
status | String | Nein | "" | Einer der partial, abandoned, spam, trash. „Empty“ gibt alle abgeschlossenen Einträge zurück. |
type | String | Nein | "" | Einer der read, unread, starred. |
include_fields | Boolescher Wert | Nein | false | Füge die Feldwerte jedes Eintrags in die Antwort ein. |
limit | Ganzzahl | Nein | 20 | Maximale Anzahl der zurückzugebenden Einträge. Bereich: 1 bis 100. |
offset | Ganzzahl | Nein | 0 | Anzahl der zu überspringenden Einträge. |
Beispielanfrage
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"
Beispielantwort
{
"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
Einen einzelnen Eintrag anhand seiner ID abrufen, einschließlich aller Feldwerte. Nur in der Pro-Version.
Parameter
| Name | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
entry_id | Ganzzahl | Ja | - | Die ID des abzurufenden Eintrags. |
include_fields | Boolescher Wert | Nein | true | Die Feldwerte des Eintrags in die Antwort aufnehmen. |
Beispielanfrage
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/get-entry/run?input%5Bentry_id%5D=456"
Beispielantwort
{
"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"
}
]
}
Die IP-Adresse in der Antwort kann maskiert werden. Hinzufügen
add_filter( 'wpforms_abilities_mask_ip_address', '__return_true' )in den Code Ihrer Website; wenn diese Option aktiviert ist, werden IPv4-Adressen so angezeigt, dass die letzten drei Oktette durch Sternchen ersetzt sind (zum Beispiel,***.***.***.100).
wpforms/Suchergebnisse
Durchsuchen Sie Einträge in einem oder allen Formularen mithilfe von Volltext-, feldspezifischen, Status- und Datumsbereichsfiltern. Nur in der Pro-Version.
Parameter
| Name | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
form_id | Ganzzahl | Nein | - | Die Suche auf ein einzelnes Formular beschränken. Die Suche in allen Formularen durchführen. |
search | String | Nein | "" | Die Volltextsuche wurde auf alle Eingabefelder angewendet. |
field_id | Ganzzahl | Nein | - | Beschränken Sie die Suche auf eine bestimmte Feld-ID. Verwenden Sie dies mit field_value. |
field_value | String | Nein | - | Genauer Wert, der mit dem durch field_id. |
date_from | String | Nein | - | Startdatum des Zeitraums, Format YYYY-MM-DD. |
date_to | String | Nein | - | Ende des Datumsbereichs, Format YYYY-MM-DD. |
status | String | Nein | "" | Einer der partial, abandoned, spam, trash. |
type | String | Nein | "" | Einer der read, unread, starred. |
include_fields | Boolescher Wert | Nein | true | Die Werte der Eingabefelder in die Antwort aufnehmen. |
limit | Ganzzahl | Nein | 20 | Maximale Anzahl von Einträgen pro Seite. Bereich: 1 bis 100. |
page | Ganzzahl | Nein | 1 | Seitenzahl. Beachten Sie, dass diese Funktion im Gegensatz zu list-forms und get-entry-summaries, die offset. |
orderby | String | Nein | date | Einer der entry_id, date, status. |
order | String | Nein | DESC | Einer der ASC, DESC. |
Beispielanfrage
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"
Beispielantwort
{
"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
}
Einsatz von WPForms bei MCP-Kunden
Jede WPForms-Funktion ist registriert bei mcp.public auf ... einstellen true, was bedeutet, dass MCP-kompatible KI-Clients (Claude Desktop, Cursor und andere) diese automatisch erkennen, sobald die WordPress-Seite über die wordpress/mcp-adapter Plugin. Nach der Installation sind keine weiteren Einstellungen in WPForms erforderlich; die Funktionen erscheinen in der Werkzeugliste des Kunden unter dem WPForms Kategorie und beachten Sie dieselben Berechtigungs-Callbacks, die auch von der REST-API verwendet werden.
Fähigkeiten programmgesteuert entdecken
Um die auf einer Website verfügbaren Funktionen aufzulisten, anstatt ihre IDs fest zu programmieren:
# Alle auf der Website registrierten Funktionen auflisten
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities"
# Das Schema für eine einzelne Funktion abrufen
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/list-forms"
Die Antwort enthält die ID, die Bezeichnung, die Beschreibung und die Kategorie jeder Funktion sowie die vollständigen Eingabe- und Ausgabeschemata. Diese Informationen reichen aus, um einen generischen Client zu erstellen, ohne dass Vorkenntnisse über die WPForms-spezifische Benutzeroberfläche erforderlich sind.
Weiterführende Links
- Vorstellung der WordPress-Fähigkeiten-API (developer.wordpress.org)
- wordpress/mcp-adapter auf GitHub
- Modellkontextprotokoll