{"id":76893,"date":"2026-07-22T13:40:53","date_gmt":"2026-07-22T12:40:53","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=76893&#038;preview=true&#038;preview_id=76893"},"modified":"2026-07-28T10:29:57","modified_gmt":"2026-07-28T09:29:57","slug":"wordpress-ki","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/","title":{"rendered":"WordPress-KI-Integration: Ein detaillierter Einblick in die Architektur und ein Anwendungsbeispiel aus der Praxis"},"content":{"rendered":"<p>Vor <a href=\"https:\/\/kinsta.com\/de\/blog\/wordpress-7-0\/\">WordPress 7.0<\/a> mussten <a href=\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki-plugins\/\">Plugins, die KI-Funktionen hinzuf\u00fcgten<\/a>, einen API-Schl\u00fcssel anfordern und verwalten, um mit einem KI-Anbieter zu kommunizieren.<\/p>\n<p>Das brachte einige Nachteile hinsichtlich des Code-Umfangs und der Wartbarkeit mit sich. Du musstest umfangreiche, propriet\u00e4re SDK-Bibliotheken in deine Plugins einbinden und anbieterspezifische cURL-Anfragen schreiben.<\/p>\n<p>Dieses fragmentierte Szenario hat sich mit der <a href=\"https:\/\/kinsta.com\/de\/blog\/wordpress-7-0\/#integration-with-ai\">in WordPress 7.0 eingef\u00fchrten nativen KI-Integration<\/a> komplett ver\u00e4ndert. Heute bietet WordPress eine zentralisierte Schnittstelle zur Konfiguration von Zugangsdaten f\u00fcr verschiedene KI-Anbieter sowie eine neue PHP-API. Diese neue Architektur erm\u00f6glicht es dir, Befehle, Anweisungen, Mediendateien und Datenstrukturen nahtlos zu senden, w\u00e4hrend der Core die Anfragen abwickelt.<\/p>\n<p>Die neue Architektur bietet sowohl f\u00fcr Website-Administratoren als auch f\u00fcr Plugin-Entwickler erhebliche Vorteile.<\/p>\n<p>Administratoren m\u00fcssen die KI-Einstellungen nicht mehr \u00fcber mehrere Plugins hinweg konfigurieren. Ab WordPress 7.0 installierst und aktivierst du einfach deine Plugin-Konnektoren, gibst deine API-Schl\u00fcssel in die einheitliche Konnektoren-Oberfl\u00e4che ein \u2013 und schon stehen sie sofort allen KI-gest\u00fctzten Plugins auf deiner Website zur Verf\u00fcgung. Du kannst die KI-Nutzung ganz einfach \u00fcberwachen, zu deinem bevorzugten Modell wechseln oder den Zugriff eines Anbieters f\u00fcr alle Plugins mit einem einzigen Klick widerrufen.<\/p>\n<p>F\u00fcr Plugin-Entwickler sind die Vorteile sogar noch gr\u00f6\u00dfer \u2013 sie reichen von Datensicherheit \u00fcber Code-Portabilit\u00e4t bis hin zu einer drastischen Reduzierung der <a href=\"https:\/\/kinsta.com\/de\/blog\/skalierbare-wordpress-agenturen\/#technical-debt\">technischen Schulden<\/a>.<\/p>\n<p>Bist du bereit, diese Reise in die neue WordPress-KI-Architektur zu beginnen? Dann lass uns loslegen.<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Die drei Ebenen der WordPress-KI-Architektur<\/h2>\n<p>Heute sind deine WordPress-Websites von Haus aus KI-f\u00e4hig. Dabei geht es jedoch nicht um sofort einsatzbereite KI-Funktionen, sondern vielmehr um die Grundlage f\u00fcr den Aufbau KI-gest\u00fctzter Websites.<\/p>\n<p>Die neue Architektur ist in drei verschiedene Ebenen gegliedert:<br \/>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"3\" sub-toc=\"true\"><\/kinsta-auto-toc><\/p>\n<h3>KI-Konnektor<\/h3>\n<p>Vor <a href=\"https:\/\/kinsta.com\/de\/blog\/wordpress-7-0\/\">WordPress 7.0<\/a> ben\u00f6tigte jedes Plugin, das deiner Website KI-Funktionen hinzuf\u00fcgte, ein eigenes System zum Speichern und Verwalten deiner API-Schl\u00fcssel. Deine Anmeldedaten mussten entweder fest im Plugin hinterlegt oder \u00fcber eine benutzerdefinierte Einstellungsseite verwaltet werden. In beiden F\u00e4llen war das alles andere als eine ideale L\u00f6sung f\u00fcr den Umgang mit sensiblen Daten.<\/p>\n<figure id=\"attachment_211404\" aria-describedby=\"caption-attachment-211404\" style=\"width: 1462px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-211404 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/06\/connectors-screen.png\" alt=\"Konnektoren-Bildschirm\" width=\"1462\" height=\"1404\"><figcaption id=\"caption-attachment-211404\" class=\"wp-caption-text\">Die zentralisierte KI-Konnektoren-Oberfl\u00e4che im WordPress-Admin-Dashboard<\/figcaption><\/figure>\n<p>\u00dcber eine einheitliche Oberfl\u00e4che kannst du alle deine KI-Dienstleister an einem zentralen Ort konfigurieren. Diese Oberfl\u00e4che bringt mehrere wesentliche Vorteile f\u00fcr die Website-Verwaltung mit sich.<\/p>\n<p>Aus Sicht der Verwaltung und Sicherheit besteht der gr\u00f6\u00dfte Vorteil darin, dass du deine Anbieter nur einmal in der \u201eKonnektoren\u201c-Oberfl\u00e4che einrichten musst und sie dann vergessen kannst \u2013 ganz gleich, wie viele Plugins sie nutzen. Solltest du jemals deine API-Schl\u00fcssel \u00e4ndern m\u00fcssen, musst du nicht jedes Plugin neu konfigurieren; du kannst sie alle auf einmal im \u201eKonnektoren\u201c-Bildschirm aktualisieren.<\/p>\n<p>Die Zentralisierung der Anmeldedaten verbessert zudem die Sicherheit deiner Website, indem sie das Risiko mindert, dass sensible Daten durch Plugins von Drittanbietern offengelegt werden, die m\u00f6glicherweise schlecht programmiert oder nicht vertrauensw\u00fcrdig sind.<\/p>\n<p>Ein weiterer wichtiger Vorteil ist die Portabilit\u00e4t des Codes. Deine Plugins m\u00fcssen nicht mehr wissen, welchen KI-Anbieter du nutzt, da die neue Architektur die Authentifizierung von der Plugin-Logik entkoppelt. Das bedeutet: Wenn du den KI-Anbieter wechselst, funktioniert dein Plugin weiterhin, ohne dass auch nur eine einzige Zeile Code ge\u00e4ndert werden muss.<\/p>\n<p>Der eigentliche Durchbruch bei der Portabilit\u00e4t ist jedoch die M\u00f6glichkeit f\u00fcr Website-Administratoren, mehrere Konnektoren gleichzeitig zu konfigurieren. Wenn ein Plugin eine Anfrage ausl\u00f6st, w\u00e4hlt WordPress automatisch den am besten geeigneten KI-Anbieter und das passende Modell aus, um die Antwort zu generieren \u2013 basierend sowohl auf der spezifischen <a href=\"https:\/\/make.wordpress.org\/core\/2026\/03\/24\/introducing-the-ai-client-in-wordpress-7-0\/#ai-model-preferences\" target=\"_blank\" rel=\"noopener noreferrer\">Konfiguration des Plugins<\/a> als auch auf den F\u00e4higkeiten der verf\u00fcgbaren Modelle.<\/p>\n<h3>KI-Client<\/h3>\n<p>W\u00e4hrend der \u201eKonnektoren\u201c-Bildschirm die Konfigurationsoberfl\u00e4che f\u00fcr KI-Anbieter bereitstellt, bietet der <a href=\"https:\/\/make.wordpress.org\/core\/2026\/03\/24\/introducing-the-ai-client-in-wordpress-7-0\/\" target=\"_blank\" rel=\"noopener noreferrer\">KI-Client<\/a> Entwicklern das operative Werkzeug zur Kommunikation mit KI-Modellen.<\/p>\n<p>Es handelt sich um eine native Software-Schnittstelle, die die Interaktion mit KI-Modellen \u00fcber die globale Funktion <code>wp_ai_client_prompt()<\/code> und einen einheitlichen Satz von PHP-Methoden standardisiert.<\/p>\n<h4>Reduzierte technische Schulden<\/h4>\n<p>F\u00fcr Entwickler ist ein gro\u00dfer Vorteil der neuen KI-Architektur die Reduzierung von technischer Verschuldung und Abh\u00e4ngigkeiten. Vor WordPress 7.0 war das Hinzuf\u00fcgen von KI-Funktionen mit sehr hohen Kosten f\u00fcr die Code-Wartung verbunden. Man musste propriet\u00e4re SDKs von Drittanbietern (wie die offiziellen Bibliotheken f\u00fcr <a href=\"https:\/\/developers.openai.com\/api\/docs\/libraries\" target=\"_blank\" rel=\"noopener noreferrer\">OpenAI<\/a> oder <a href=\"https:\/\/platform.claude.com\/docs\/en\/api\/client-sdks\" target=\"_blank\" rel=\"noopener noreferrer\">Anthropic<\/a>) einbinden und st\u00e4ndig die Bibliotheksversionen im Auge behalten. Das f\u00fchrte zu einem aufgebl\u00e4hten Plugin-Code und \u00f6ffnete die T\u00fcr f\u00fcr Kompatibilit\u00e4tsfehler.<\/p>\n<p>Au\u00dferdem musstest du viele Zeilen Code schreiben, um die Netzwerk-Logik und das Parsen der Antworten zu handhaben. Erschwerend kam hinzu, dass der Code anbieterabh\u00e4ngig war \u2013 wenn du dich also entschieden hast, den KI-Anbieter zu wechseln, musstest du die gesamte Netzwerkarchitektur deines Plugins neu schreiben.<\/p>\n<p>Der KI-Client l\u00f6st dieses Problem an der Wurzel, indem er all diese aufwendige Arbeit an den WordPress-Kern \u00fcbertr\u00e4gt. Dein Code wird v\u00f6llig unabh\u00e4ngig vom KI-Anbieter; du musst deine Anweisungen nur einmal schreiben, und WordPress \u00fcbersetzt sie in den modellspezifischen \u201eDialekt\u201c.<\/p>\n<h4>Intelligente Modellauswahl<\/h4>\n<p>Eine leistungsstarke Funktion der \u201eFluent Interface\u201c des KI-Clients ist die M\u00f6glichkeit, bevorzugte Modelle \u00fcber die Methode <code>using_model_preference()<\/code> festzulegen, die \u00fcber die Builder-Funktion <code>wp_ai_client_prompt()<\/code>\u00a0verf\u00fcgbar ist. Mit dieser Methode kannst du eine geordnete Liste von Modellen f\u00fcr die spezifische Aufgabe deines Plugins deklarieren. Der folgende Code fordert beispielsweise eine Textgenerierung an, die auf drei bevorzugte Modelle abzielt:<\/p>\n<pre><code class=\"language-php\">$text_result = wp_ai_client_prompt( 'Convert the following transcript into a concise, blog-ready draft.' )\n\t-&gt;using_model_preference(\n\t\t'gemini-2.5-flash',\n\t\t'claude-3-5-sonnet',\n\t\t'gpt-4o'\n\t)\n\t-&gt;generate_text();<\/code><\/pre>\n<p>WordPress \u00fcberpr\u00fcft die auf dem \u201eKonnektoren\u201c-Bildschirm konfigurierten Anbieter und durchsucht die im Plugin-Code definierte Modellliste, wobei es den ersten Connector ausw\u00e4hlt, der auch auf der Website verf\u00fcgbar ist. Sollte keines der in deinem Code angegebenen Modelle unter den aktiven \u201eKonnektoren\u201c verf\u00fcgbar sein, ignoriert WordPress die Modellpr\u00e4ferenzliste und greift auf das erste kompatible Modell zur\u00fcck, das auf der Website konfiguriert ist.<\/p>\n<p>Dieser Mechanismus stellt sicher, dass dein Plugin immer funktioniert, selbst wenn der Website-Administrator zu einem anderen KI-Anbieter wechselt.<\/p>\n<h3>KI-Anbieter<\/h3>\n<p>Ein KI-Anbieter ist das Unternehmen, das die von uns t\u00e4glich genutzten gro\u00dfen Sprachmodelle (LLMs) besitzt, trainiert und hostet. OpenAI, Google Gemini und Anthropic sind die g\u00e4ngigsten KI-Anbieter, die \u00fcber spezielle Konnektoren in WordPress 7.0 unterst\u00fctzt werden, aber Entwickler k\u00f6nnen zus\u00e4tzliche benutzerdefinierte KI-Anbieter registrieren.<\/p>\n<p>Wenn der Code deines Plugins die Methode <code>generate_text()<\/code> \u2013 oder eine andere Generierungsmethode \u2013 aufruft, kompiliert WordPress die Daten und sendet sie \u00fcber den vom Konnektor eingerichteten Endpunkt an den KI-Anbieter. Hier ist der Ablauf der Vorg\u00e4nge, die hinter den Kulissen stattfinden:<\/p>\n<ul>\n<li>Zun\u00e4chst erh\u00e4lt der KI-Anbieter den Eingabetext zusammen mit eventuell angeh\u00e4ngten Multimediadateien (Datenpaket).<\/li>\n<li>Nach dem Empfang verarbeitet er die Anfrage unter Ber\u00fccksichtigung etwaiger Systemanweisungen.<\/li>\n<li>Anschlie\u00dfend generiert er die Ausgabe, die entweder als Freitext oder als JSON-Objekt strukturiert ist.<\/li>\n<li>Schlie\u00dflich sendet er die Ausgabe \u00fcber eine HTTP-Antwort zur\u00fcck an WordPress.<\/li>\n<\/ul>\n<p>Jeder Anbieter bietet eine gro\u00dfe Auswahl an Modellen mit unterschiedlichen F\u00e4higkeiten, Geschwindigkeiten und Preisen an. Diese reichen von Modellen, die ausschlie\u00dflich auf Textverarbeitung spezialisiert sind, \u00fcber multimodale Modelle, die neben einer Textanfrage auch Mediendateien (Audio, Bilder, Video) akzeptieren, bis hin zu Modellen, die f\u00fcr bestimmte Aufgaben entwickelt wurden, wie beispielsweise die Bilderzeugung oder die Sprach-zu-Text-Umwandlung.<\/p>\n<figure id=\"attachment_211411\" aria-describedby=\"caption-attachment-211411\" style=\"width: 1718px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-211411 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/06\/gemini-3-models.png\" alt=\"Googles Gemini-3-Modellfamilie\" width=\"1718\" height=\"1534\"><figcaption id=\"caption-attachment-211411\" class=\"wp-caption-text\">Googles Gemini-3-Modellfamilie<\/figcaption><\/figure>\n<p>Auch hier h\u00e4ngt es von den KI-Anbietern ab, die der Nutzer im \u201eConnectors\u201c-Bildschirm konfiguriert, welche Modelle f\u00fcr eine WordPress-Seite verf\u00fcgbar sind. Das bedeutet, dass dein Plugin nicht vorschreibt, welcher Anbieter konkret verwendet werden soll.<\/p>\n<h2>Ein tiefer Einblick in die Funktion wp_ai_client_prompt()<\/h2>\n<p>Die Funktion <code>wp_ai_client_prompt()<\/code>\u00a0erm\u00f6glicht es Plugins, auf standardisierte Weise mit KI-Modellen zu kommunizieren: Du musst keine externen Bibliotheken installieren, keine anbieterspezifischen Konfigurationen vornehmen und keine manuellen HTTP-Anfragen fest einprogrammieren.<\/p>\n<p>Es handelt sich um eine Software-Schnittstelle, mit der du deinen Code nur einmal schreiben musst, w\u00e4hrend WordPress die Hauptarbeit \u00fcbernimmt und deine Anweisungen in den spezifischen \u201eDialekt\u201c des jeweiligen Modells \u00fcbersetzt.<\/p>\n<p>Die Funktion gibt eine Instanz der <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_ai_client_prompt_builder\/\" target=\"_blank\" rel=\"noopener noreferrer\">Klasse <code>WP_AI_Client_Prompt_Builder<\/code><\/a> zur\u00fcck, die eine fl\u00fcssige Schnittstelle mit verkettbaren Methoden bietet, um deine Eingabeaufforderungen anzupassen. Die Funktion wird <a href=\"https:\/\/core.trac.wordpress.org\/browser\/tags\/7.0\/src\/wp-includes\/ai-client\/class-wp-ai-client-prompt-builder.php#L33\" target=\"_blank\" rel=\"noopener noreferrer\">wie folgt beschrieben<\/a>:<\/p>\n<pre><code class=\"language-php\">\/**\n * Fluent builder for constructing AI prompts, returning WP_Error on failure.\n *\n * This class provides a fluent interface for building prompts with various\n * content types and model configurations. It wraps the PHP AI Client SDK's\n * PromptBuilder and adds WordPress-specific behavior including WP_Error\n * handling instead of exceptions, snake_case method naming, and integration\n * with the Abilities API.\n *\n * Only the generating methods will return a WP_Error, to not break the fluent\n * interface. As soon as any exception is caught in a chain of method calls,\n * the returned instance will be in an error state, and all subsequent method\n * calls will be no-ops that just return the same error state instance. Only\n * when a generating method is called, the WP_Error will be returned.\n *\/<\/code><\/pre>\n<p><code>wp_ai_client_prompt()<\/code>\u00a0f\u00fchrt keine unmittelbare HTTP-Anfrage durch, sondern instanziiert ein <code>WP_AI_Client_Prompt_Builder<\/code>-Objekt und gibt dieses zur\u00fcck. \u00dcber 50 Konfigurationsmethoden f\u00fcllen die privaten Eigenschaften des Objekts mithilfe einer <a href=\"https:\/\/en.wikipedia.org\/wiki\/Fluent_interface\" target=\"_blank\" rel=\"noopener noreferrer\">Fluent-Schnittstelle<\/a>, was den Code sehr gut lesbar und einfach zu schreiben macht.<\/p>\n<p>Hier ist eine nicht vollst\u00e4ndige Liste der Methoden, die du am h\u00e4ufigsten verwenden wirst:<\/p>\n<ul>\n<li><code>with_text()<\/code>: F\u00fcgt Text zur aktuellen Nachricht hinzu.<\/li>\n<li><code>with_file()<\/code>: F\u00fcgt der aktuellen Nachricht eine Datei hinzu.<\/li>\n<li><code>with_history()<\/code>: F\u00fcgt Nachrichten aus dem Konversationsverlauf hinzu.<\/li>\n<li><code>using_model_preference()<\/code>: Legt die bevorzugten Modelle fest, die der Reihe nach ausgewertet werden sollen.<\/li>\n<li><code>using_system_instruction()<\/code>: Legt die Systemanweisung fest.<\/li>\n<li><code>using_max_tokens()<\/code>: Legt die maximale Anzahl der zu generierenden Tokens fest.<\/li>\n<li><code>using_temperature()<\/code>: Legt die Temperatur f\u00fcr die Generierung fest.<\/li>\n<li><code>using_top_p()<\/code>: Legt den Top-p-Wert f\u00fcr die Generierung fest.<\/li>\n<li><code>using_top_k()<\/code>: Legt den Top-k-Wert f\u00fcr die Generierung fest.<\/li>\n<li><code>as_output_file_type()<\/code>: Legt den Typ der Ausgabedatei fest.<\/li>\n<li><code>as_json_response()<\/code>: Konfiguriert die Eingabeaufforderung f\u00fcr die Ausgabe von JSON-Antworten.<\/li>\n<li><code>is_supported_for_text_generation()<\/code>: Pr\u00fcft, ob die Textgenerierung von der aktiven Konfiguration unterst\u00fctzt wird.<\/li>\n<li><code>is_supported_for_image_generation()<\/code>: Pr\u00fcft, ob die Bilderzeugung von der aktiven Konfiguration unterst\u00fctzt wird.<\/li>\n<li><code>is_supported_for_text_to_speech_conversion()<\/code>: Pr\u00fcft, ob die Text-zu-Sprache-Umwandlung von der aktiven Konfiguration unterst\u00fctzt wird.<\/li>\n<li><code>is_supported_for_video_generation()<\/code>: Pr\u00fcft, ob die Videoerstellung von der aktiven Konfiguration unterst\u00fctzt wird.<\/li>\n<li><code>generate_text()<\/code>: Erzeugt ein Textergebnis aus der Eingabeaufforderung.<\/li>\n<li><code>generate_image()<\/code>: Erzeugt ein Bild anhand der Eingabeaufforderung.<\/li>\n<li><code>convert_text_to_speech()<\/code>: Wandelt Text in Sprache um.<\/li>\n<li><code>generate_speech()<\/code>: Erzeugt Sprache aus der Eingabeaufforderung.<\/li>\n<li><code>generate_video()<\/code>: Erzeugt ein Video aus der Eingabeaufforderung.<\/li>\n<\/ul>\n<p>Die vollst\u00e4ndige Liste der Methoden findest du im <a href=\"https:\/\/github.com\/WordPress\/wordpress-develop\/blob\/7.0\/src\/wp-includes\/ai-client\/class-wp-ai-client-prompt-builder.php#L33\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress-Kernquellcode<\/a>.<\/p>\n<p>Angenommen, du m\u00f6chtest den Inhalt einer Audiodatei genau transkribieren. Dann k\u00f6nntest du die Funktion wie folgt verwenden:<\/p>\n<pre><code class=\"language-php\">$transcription_builder = wp_ai_client_prompt( $prompt )\n\t-&gt;with_file( $audio_base64, $mime_type )\n\t-&gt;using_temperature( 0.1 );\n\nif ( ! $transcription_builder-&gt;is_supported_for_text_generation() ) {\n\t\/\/ No configured provider supports the current prompt configuration.\n\treturn new WP_Error(\n\t\t'no_supported_model',\n\t\t'No configured AI model can process this request. Configure a provider in Settings &gt; Connectors.',\n\t\tarray( 'status' =&gt; 400 )\n\t);\n}\n\n$transcript = $transcription_builder-&gt;generate_text();<\/code><\/pre>\n<p>Das macht dieser Code:<\/p>\n<ul>\n<li><code>$prompt<\/code>: Stellt die Hauptzeichenfolge dar, die deine Kernanweisungen enth\u00e4lt.<\/li>\n<li><code>with_file()<\/code>: Schaltet die multimodalen Funktionen der Schnittstelle frei. Im obigen Beispiel haben wir die vorcodierte Audio-Bin\u00e4rdatei als Base64-kodierte Zeichenkette zusammen mit dem entsprechenden MIME-Typ \u00fcbergeben.<\/li>\n<li><code>using_temperature()<\/code>: Steuert den Determinismus der Antwort. W\u00e4hrend ein niedriger Wert (0,1) das Modell dazu zwingt, sich genau an das Audiomaterial zu halten, erm\u00f6glicht ein h\u00f6herer Wert mehr kreative Freiheit. Du kannst diese Methode mit der<code>using_top_p()<\/code>-Methode (Top-Probability) kombinieren, um die Ausgabe genauer zu steuern.<\/li>\n<li><code>is_supported_for_text_generation()<\/code>: Pr\u00fcft, ob die aktiven Konnektoren die Anforderungen der aktuellen Eingabe unterst\u00fctzen, bevor Ressourcen f\u00fcr einen Netzwerkaufruf bereitgestellt werden.<\/li>\n<li><code>generate_text()<\/code>: Dies ist die abschlie\u00dfende Methode der Fluent Interface. Sie sendet die vereinheitlichte HTTP-Anfrage an den aktiven Anbieter und gibt entweder die generierte Textzeichenfolge oder bei einem Fehler ein <code>WP_Error<\/code>-Objekt zur\u00fcck.<\/li>\n<\/ul>\n<p>Kurz gesagt: Wir haben dem KI-Anbieter eine Text-Eingabeaufforderung und eine angeh\u00e4ngte Audiodatei \u00fcbergeben. Wir haben eine niedrige \u201eTemperatur\u201c eingestellt, um ein m\u00f6glichst deterministisches Ergebnis zu gew\u00e4hrleisten, \u00fcberpr\u00fcft, ob die aktive Konfiguration die Textgenerierung unterst\u00fctzt, und schlie\u00dflich die Sprach-zu-Text-Transkription basierend auf der Antwort der KI durchgef\u00fchrt.<\/p>\n<p>Mit einer weiteren Eingabe k\u00f6nnen wir das Rohtranskript an die KI zur\u00fcckgeben, um eine als JSON-Objekt strukturierte Antwort zu generieren:<\/p>\n<pre><code class=\"language-php\">$structured_json = wp_ai_client_prompt(\n\t\"Convert the following transcript into a concise, blog-ready draft in American English.n\" .\n\t\"Return JSON with a post title and body sections.n\" .\n\t\"Each section must have: heading, level (2 or 3), and paragraphs (array).n\" .\n\t\"If useful, include bullet_points (array) for short actionable lists.n\" .\n\t\"Use short, clear headings and readable paragraph text.nn\" .\n\t\"Transcript:n\" . $transcript\n)\n\t-&gt;using_system_instruction( \"You are a professional WordPress content editor. Always write in American English (use appropriate spelling, grammar, and conventions for that language variant).\" )\n\t-&gt;using_temperature( 0.4 )\n\t-&gt;as_json_response( $schema )\n\t-&gt;generate_text();<\/code><\/pre>\n<p>F\u00fcr diese zweite Eingabe nutzen wir zus\u00e4tzliche Methoden, um weitere Funktionen der API auszusch\u00f6pfen:<\/p>\n<ul>\n<li><code>using_system_instruction()<\/code>: Definiert den operativen Kontext und die Verhaltensrolle des Modells und trennt dabei klar dessen Persona (\u201eein professioneller WordPress-Content-Editor\u201c) von den eigentlichen Daten.<\/li>\n<li><code>using_temperature( 0.4 )<\/code>: Legt eine h\u00f6here \u201eTemperatur\u201c fest als bei der vorherigen Transkriptionsaufgabe, wodurch das Modell einen reichhaltigeren Wortschatz nutzen und fl\u00fcssigere Inhalte erzeugen kann.<\/li>\n<li><code>as_json_response()<\/code>: Zwingt das Modell dazu, eine strukturierte JSON-Zeichenkette zur\u00fcckzugeben, die dem in deiner Variable <code>$schema<\/code>\u00a0definierten Layout entspricht. Das ist n\u00fctzlich, wenn du Inhalte f\u00fcr Gutenberg vorbereitest.<\/li>\n<\/ul>\n<p>Mit einer als JSON strukturierten Ausgabe kannst du einzelne Felder extrahieren und sie mithilfe von WordPress-Kernfunktionen programmgesteuert in native Gutenberg-Bl\u00f6cke abbilden.<\/p>\n<p>Einen tieferen Einblick in den KI-Client findest du auch in der Entwicklernotiz <a href=\"https:\/\/make.wordpress.org\/core\/2026\/03\/24\/introducing-the-ai-client-in-wordpress-7-0\/\" target=\"_blank\" rel=\"noopener noreferrer\">Einf\u00fchrung des KI-Clients in WordPress 7.0<\/a>.<\/p>\n<h2>Eine Audiodatei mit KI in Gutenberg-f\u00e4higen Inhalt umwandeln<\/h2>\n<p>Nachdem du nun ein besseres Verst\u00e4ndnis f\u00fcr die drei Ebenen der WordPress-KI-Architektur hast, schauen wir uns anhand eines Beispiels aus der Praxis an, wie das Ganze zusammenpasst. In diesem Abschnitt lernst du, wie du die Kernlogik eines KI-gest\u00fctzten Plugins entwickelst, das direkt aus einer Audiodatei einen gut ausgearbeiteten Beitragsentwurf generiert.<\/p>\n<p>Die Anwendungsf\u00e4lle f\u00fcr diese Funktion sind vielf\u00e4ltig und breit gef\u00e4chert. Stell dir vor, du erstellst einen umfassenden Blogbeitrag aus einer kurzen Sprachnotiz, die du \u00fcber deine Lieblings-Messaging-App gesendet hast, oder transkribierst ein auf deinem Smartphone aufgenommenes Audio-Interview.<\/p>\n<p>Um diese Funktionalit\u00e4t auf deiner WordPress-Website zu implementieren, musst du ein benutzerdefiniertes Plugin erstellen. Wir werden hier weder auf die Boilerplate-Dateien noch auf den gesamten Prozess der Plugin-Registrierung eingehen; die Grundlagen der Plugin-Entwicklung findest du in <a href=\"https:\/\/kinsta.com\/de\/blog\/gutenberg-plugin\/\">anderen Tutorials<\/a> im Kinsta-Blog oder in der <a href=\"https:\/\/make.wordpress.org\/cli\/handbook\/how-to\/how-to-create-custom-plugins\/\" target=\"_blank\" rel=\"noopener noreferrer\">offiziellen WordPress.org-Dokumentation<\/a>.<\/p>\n<p>Wir konzentrieren uns auf die Kernlogik, die es deinem Plugin erm\u00f6glicht, mit deinem KI-Anbieter zu kommunizieren. Aber keine Sorge, das Plugin steht dir in <a href=\"https:\/\/github.com\/carlodaniele\/ai-content-builder\" target=\"_blank\" rel=\"noopener noreferrer\">diesem GitHub-Repository<\/a> zum Durchsehen und Herunterladen zur Verf\u00fcgung.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Das Beispiel-Plugin dieses Tutorials wurde auf WordPress 7.0 erstellt. Es funktioniert nicht mit \u00e4lteren Versionen des CMS.<\/p>\n<\/aside>\n\n<h3>Was dieses Plugin macht<\/h3>\n<p>Um loszulegen, geh auf die <a href=\"https:\/\/github.com\/carlodaniele\/ai-content-builder\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub-Projektseite<\/a> und lade das ZIP-Archiv des Plugins herunter. Melde dich anschlie\u00dfend in deinem WordPress 7.0-Dashboard an und lade es unter <strong>Plugins<\/strong> &gt; <strong>Plugin hinzuf\u00fcgen<\/strong> &gt; <strong>Plugin hochladen<\/strong>\u00a0hoch. Sobald das Plugin installiert und aktiviert ist, kannst du diesem Tutorial folgen.<\/p>\n<p>Das <strong>KI-Content-Builder-Plugin<\/strong> generiert eine Seitenleiste mit benutzerdefinierten Einstellungen, die \u00fcber ein Symbol in der oberen rechten Ecke der Block-Editor-Oberfl\u00e4che aufgerufen werden kann. Diese Seitenleiste verf\u00fcgt \u00fcber eine spezielle Oberfl\u00e4che zum Hochladen von Audiodateien und einen Schalter, mit dem die KI den aktuellen Beitragstitel \u00fcberschreiben kann.<\/p>\n<figure id=\"attachment_211625\" aria-describedby=\"caption-attachment-211625\" style=\"width: 1612px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-211625 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/06\/ai-content-builder-sidebar.png\" alt=\"Die Sidebar des KI-Content-Builder-Plugins\" width=\"1612\" height=\"1054\"><figcaption id=\"caption-attachment-211625\" class=\"wp-caption-text\">Das KI-Content-Builder-Plugin f\u00fcgt dem Block-Editor eine benutzerdefinierte Einstellungs-Seitenleiste hinzu<\/figcaption><\/figure>\n<p>Die Schaltfl\u00e4che<strong> Audio hochladen<\/strong>\u00a0\u00f6ffnet den WordPress-Medien-Uploader, \u00fcber den du eine neue Audiodatei hochladen oder eine vorhandene aus deiner Medienbibliothek ausw\u00e4hlen kannst.<\/p>\n<figure id=\"attachment_211626\" aria-describedby=\"caption-attachment-211626\" style=\"width: 1560px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-211626 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/06\/select-or-upload-media.png\" alt=\"Die WordPress-Medienbibliothek\" width=\"1560\" height=\"1328\"><figcaption id=\"caption-attachment-211626\" class=\"wp-caption-text\">W\u00e4hle Audiodateien in der WordPress-Medienbibliothek aus oder lade sie hoch<\/figcaption><\/figure>\n<p>Sobald die Audiodatei geladen ist, l\u00f6st die Schaltfl\u00e4che <strong>Inhalt generieren<\/strong>\u00a0eine asynchrone Anfrage an deinen aktiven KI-Anbieter aus.<\/p>\n<figure id=\"attachment_211627\" aria-describedby=\"caption-attachment-211627\" style=\"width: 1616px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-211627 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/06\/generate-content-button.png\" alt=\"Die Plugin-Seitenleiste\" width=\"1616\" height=\"1062\"><figcaption id=\"caption-attachment-211627\" class=\"wp-caption-text\">Die Plugin-Seitenleiste mit der aktiven Schaltfl\u00e4che \u201eInhalt generieren\u201c<\/figcaption><\/figure>\n<p>Das Bild unten zeigt den fertigen Beitragsentwurf, den die KI in nur wenigen Sekunden generiert hat.<\/p>\n<figure id=\"attachment_211628\" aria-describedby=\"caption-attachment-211628\" style=\"width: 1612px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-211628 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/06\/ai-generated-post-content.png\" alt=\"Von KI generiertes Markup\" width=\"1612\" height=\"1336\"><figcaption id=\"caption-attachment-211628\" class=\"wp-caption-text\">Ein gut formatierter Blogbeitrag-Entwurf, der von der KI aus einer rohen Audiodatei generiert wurde<\/figcaption><\/figure>\n<p>Der resultierende Inhalt ist in native Gutenberg-Bl\u00f6cke strukturiert, darunter Abs\u00e4tze, \u00dcberschriften und Listen.<\/p>\n<figure id=\"attachment_211629\" aria-describedby=\"caption-attachment-211629\" style=\"width: 1616px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-211629 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/06\/post-content-in-code-editor.png\" alt=\"Gut strukturiertes Markup im WordPress-Code-Editor\" width=\"1616\" height=\"1396\"><figcaption id=\"caption-attachment-211629\" class=\"wp-caption-text\">Gut strukturiertes Markup im WordPress-Code-Editor<\/figcaption><\/figure>\n<p>Schauen wir uns nun die Logik des Plugins genauer an.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Dieses Plugin wurde speziell f\u00fcr dieses Tutorial erstellt und dient ausschlie\u00dflich zu Demonstrationszwecken. Verwende es nicht in der Produktion.<\/p>\n<\/aside>\n\n<h3>Was du f\u00fcr dieses Plugin brauchst<\/h3>\n<p>Hier sind die grundlegenden Voraussetzungen f\u00fcr die Erstellung eines WordPress-Plugins, das sich in die neue KI-Architektur einbindet, um deine Beitragsinhalte zu generieren:<\/p>\n<ul>\n<li>WordPress 7.0+<\/li>\n<li>Einen API-Schl\u00fcssel f\u00fcr einen KI-Anbieter, der ein Modell zur Sprach-zu-Text-Umwandlung anbietet. In unserem Beispiel verwenden wir Google AI.<\/li>\n<li>Deine bevorzugte IDE. F\u00fcr dieses Plugin haben wir VS Code verwendet.<\/li>\n<li>Fundierte Kenntnisse in den Bereichen WordPress- und Gutenberg-Entwicklung, REST-APIs, PHP und JavaScript.<\/li>\n<\/ul>\n<p>Du musst dir keine Gedanken \u00fcber Node.js, Build-Prozesse oder den Import externer Bibliotheken machen, da dieses Plugin vollst\u00e4ndig auf nativen WordPress-Core-APIs basiert. Das Ergebnis ist ein schlankes, sicheres Plugin ohne technische Schulden.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Aus Platzgr\u00fcnden konzentrieren sich die folgenden Abschnitte ausschlie\u00dflich auf den Code, der die Kommunikation mit dem KI-Client und die Verarbeitung von KI-generierten Inhalten regelt. Der restliche Code ist im <a href=\"https:\/\/github.com\/carlodaniele\/ai-content-builder\/tree\/35ef318c10768969e235c89617a59cc4b6b38eb4\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub-Repository<\/a> vollst\u00e4ndig dokumentiert.<\/p>\n<\/aside>\n\n<h3>Plugin-Struktur und Mindestversion von WordPress<\/h3>\n<p>Das AI Content Builder-Plugin besteht aus nur zwei Dateien:<\/p>\n<ul>\n<li><code>ai-content-builder.php<\/code><\/li>\n<li><code>editor.js.<\/code><\/li>\n<\/ul>\n<p>Die erforderliche Mindestversion von WordPress ist 7.0, stell also sicher, dass du dies im Header des Plugins festlegst:<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/**\n * Plugin Name: AI Content Builder\n * Description: Gutenberg sidebar plugin that uploads audio and generates post content using the WordPress 7.0 AI Client.\n * Version: 1.0.0\n * Requires at least: 7.0\n * Requires PHP: 8.0\n * Author: Your Name\n * License: GPL-2.0-or-later\n * Text Domain: ai-content-builder\n *\/<\/code><\/pre>\n<p>Vor diesem Hintergrund schauen wir uns nun den Prozess der Entwicklung eines KI-gest\u00fctzten Plugins f\u00fcr WordPress an.<\/p>\n<h3>Der Datenfluss des Plugins<\/h3>\n<p>Bevor wir uns den Code genauer ansehen, schauen wir uns erst mal an, wie die Daten vom WordPress-Backend (dem Block-Editor) zum PHP-Server und zum KI-Anbieter flie\u00dfen \u2013 und dann wieder zur\u00fcck.<\/p>\n<p><a href=\"#register-api-endpoint\">1. Vom Browser zum Server: Asynchroner REST-Aufruf<\/a>: Der Browser sendet die Audio-ID an den benutzerdefinierten REST-Endpunkt des Plugins. Um zu verhindern, dass die Benutzeroberfl\u00e4che einfriert, registrieren wir einen REST-Endpunkt, der asynchrone Anfragen an den PHP-Server zul\u00e4sst.<\/p>\n<p><a href=\"#first-ai-pass\">2. Erster KI-Durchlauf: Sprach-zu-Text-Transkription<\/a>: Der Server f\u00e4ngt die Anfrage ab, ruft die Audiodatei aus der Datenbank ab und fragt den KI-Client ab, um die Rohtext-Transkription zu extrahieren.<\/p>\n<p><a href=\"#second-ai-pass\">3. Zweiter KI-Durchlauf: Strukturierung des Inhalts<\/a>: Der Server sendet die Rohtranskription zur\u00fcck an den KI-Client und fordert an, dass sie als strukturiertes JSON-Objekt formatiert wird.<\/p>\n<p><a href=\"#block-generation\">4. Datenbef\u00fcllung und Blockgenerierung<\/a>: Das JavaScript-Skript (JS) empf\u00e4ngt das strukturierte JSON-Objekt, normalisiert es und ordnet die Felder den nativen Gutenberg-Bl\u00f6cken zu.<\/p>\n<p>Schauen wir uns nun die Logik hinter den einzelnen Phasen an.<\/p>\n<h3 id=\"register-api-endpoint\">1. Einen benutzerdefinierten API-Endpunkt registrieren<\/h3>\n<p>Der erste Schritt bei der Erstellung des <strong>KI-Content-Builder-Plugins<\/strong> ist die Registrierung eines API-Endpunkts. Dies ist unerl\u00e4sslich, da die Verarbeitung einer Audiodatei und die Generierung einer Antwort f\u00fcr das KI-Modell mehrere Sekunden (oder sogar Minuten) dauern k\u00f6nnen. <strong>Durch die Registrierung eines REST-Endpunkts kannst du \u00fcber die Steuerelemente in der Seitenleiste asynchrone Anfragen stellen und so verhindern, dass die Benutzeroberfl\u00e4che einfriert.<\/strong><\/p>\n<p>Durch die Registrierung eines API-Endpunkts kannst du au\u00dferdem sichere KI-Aufrufe durchf\u00fchren, ohne Anmeldedaten preiszugeben, indem du das native Authentifizierungssystem von WordPress nutzt.<\/p>\n<p>Die Logik f\u00fcr die Registrierung und Initialisierung des Endpunkts wird in der PHP-Datei des Plugins mithilfe der beiden Klassenmethoden <code>init()<\/code>\u00a0und <code>register_rest_routes()<\/code>\u00a0abgewickelt.<\/p>\n<pre><code class=\"language-php\">public static function init(): void {\n\n\t\/\/ Register the custom REST endpoint used by the sidebar JS.\n\tadd_action( 'rest_api_init', array( __CLASS__, 'register_rest_routes' ) );\n\n\t...\n}<\/code><\/pre>\n<p>Indem der Funktionsaufruf an den Hook <code>rest_api_init<\/code>\u00a0angeh\u00e4ngt wird, registriert das Plugin den Endpunkt-Stammordner erst dann, wenn eine REST-API-Anfrage ausgel\u00f6st wird. Das verbessert die Leistung, da unn\u00f6tige Verz\u00f6gerungen beim Laden der Seite vermieden werden.<\/p>\n<p>Du kannst Routen mithilfe der Methode <code>register_rest_routes()<\/code>\u00a0konfigurieren, wie im folgenden Code gezeigt:<\/p>\n<pre><code class=\"language-php\">public static function register_rest_routes(): void {\n\tregister_rest_route(\n\t\tself::REST_NAMESPACE,\n\t\tself::REST_ROUTE,\n\t\tarray(\n\t\t\t'methods'             =&gt; WP_REST_Server::CREATABLE, \/\/ Alias for POST.\n\t\t\t'callback'            =&gt; array( __CLASS__, 'handle_generate_request' ),\n\t\t\t'permission_callback' =&gt; static function (): bool {\n\t\t\t\t\/\/ Reject unauthenticated or insufficiently privileged requests early.\n\t\t\t\treturn current_user_can( 'edit_posts' );\n\t\t\t},\n\t\t\t'args'                =&gt; array(\n\t\t\t\t'audio_id' =&gt; array(\n\t\t\t\t\t'type'     =&gt; 'integer',\n\t\t\t\t\t'required' =&gt; true,\n\t\t\t\t),\n\t\t\t),\n\t\t)\n\t);\n}<\/code><\/pre>\n<p>Diese Methode f\u00fchrt Folgendes aus:<\/p>\n<ul>\n<li>Die <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_rest_route\/\" target=\"_blank\" rel=\"noopener noreferrer\">Funktion <code>register_rest_route()<\/code><\/a> nimmt drei Parameter entgegen: den Routen-Namespace, die Route selbst und ein Konfigurations-Array.<\/li>\n<li><code>WP_REST_Server::CREATABLE<\/code> ist ein Alias f\u00fcr die POST-Transportmethode, die verwendet wird, um maximale Kompatibilit\u00e4t mit der internen Architektur von WordPress zu gew\u00e4hrleisten.<\/li>\n<li><code>permission_callback<\/code> ist eine anonyme Funktion, die den Zugriff auf authentifizierte Benutzer beschr\u00e4nkt, die die Berechtigung zum Erstellen und Bearbeiten ihrer eigenen Beitr\u00e4ge haben. WordPress blockiert die Anfrage dann vor der Verarbeitung und gibt bei unbefugtem Zugriff automatisch einen <a href=\"https:\/\/kinsta.com\/de\/blog\/401-fehler\/\">401-Fehler (\u201eUnauthorized\u201c)<\/a> oder <a href=\"https:\/\/kinsta.com\/de\/blog\/403-forbidden-fehler\/\">einen 403-Fehler (\u201eForbidden\u201c)<\/a> zur\u00fcck.<\/li>\n<li><code>args<\/code> ist ein optionales Array mit zus\u00e4tzlichen Parametern, mit denen du die API-Antwort anpassen kannst. Damit kannst du festlegen, welche Daten die Anfrage an den Endpunkt zur\u00fcckgeben soll.<\/li>\n<li><code>audio_id<\/code> ist ein Array mit Parametern, das den Typ der erforderlichen Daten angibt. Wenn der zur\u00fcckgegebene Datentyp keine Ganzzahl ist oder fehlt, bricht die REST-API die Ausf\u00fchrung ab und l\u00f6st einen Fehler aus.<\/li>\n<\/ul>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Weitere Informationen zu <a href=\"https:\/\/developer.wordpress.org\/rest-api\/extending-the-rest-api\/routes-and-endpoints\/\" target=\"_blank\" rel=\"noopener noreferrer\">Routen und Endpunkten<\/a> findest du in der offiziellen Dokumentation.<\/p>\n<\/aside>\n\n<p>Stelle schlie\u00dflich sicher, dass die Editor-Seitenleiste wei\u00df, wohin die Daten gesendet werden sollen. Dazu verwendest du die Funktion <code>wp_localize_script()<\/code>\u00a0innerhalb der Methode <code>enqueue_editor_assets()<\/code>.<\/p>\n<pre><code class=\"language-php\">public static function enqueue_editor_assets(): void {\n\t...\n\n\twp_localize_script(\n\t\t'ai-content-builder-editor',\n\t\t'AICBData',\n\t\tarray(\n\t\t\t'restPath' =&gt; '\/' . self::REST_NAMESPACE . self::REST_ROUTE,\n\t\t\t'nonce'    =&gt; wp_create_nonce( 'wp_rest' ),\n\t\t)\n\t);\n}<\/code><\/pre>\n<ul>\n<li>Die <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_localize_script\/\" target=\"_blank\" rel=\"noopener noreferrer\">Funktion <code>wp_localize_script()<\/code><\/a> wird in erster Linie verwendet, um ein registriertes Skript mit Daten f\u00fcr eine JavaScript-Variable zu verkn\u00fcpfen, aber hier nutzen wir sie, um Daten von PHP an JavaScript \u00fcber das globale <code>AICBData<\/code>-Objekt zu \u00fcbergeben.<\/li>\n<li><code>restPath<\/code> ist die Endpunktadresse; wenn du sie hier angibst, musst du sie nicht fest in die JavaScript-Datei einbetten.<\/li>\n<li><code>nonce<\/code> legt ein Sicherheitstoken fest, um <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_create_nonce\/\" target=\"_blank\" rel=\"noopener noreferrer\">unbefugten Zugriff zu verhindern<\/a>.<\/li>\n<\/ul>\n<h3 id=\"first-ai-pass\">2. Zugriff auf den KI-Client, um Text aus einer Audiodatei zu extrahieren<\/h3>\n<p>Das Herzst\u00fcck unseres Plugins ist die Methode <code>handle_generate_request()<\/code>. Diese Methode f\u00fchrt eine Abfolge von Aufgaben durch, beginnend mit Sicherheitspr\u00fcfungen und endend mit der Generierung von Beitragsinhalten, die in den Block-Editor eingef\u00fcgt werden sollen.<\/p>\n<p>Zun\u00e4chst wird \u00fcberpr\u00fcft, ob der KI-Client verf\u00fcgbar ist und ob die KI-Unterst\u00fctzung auf der Website nicht deaktiviert wurde.<\/p>\n<pre><code class=\"language-php\">public static function handle_generate_request( WP_REST_Request $request ) {\n\tif ( ! function_exists( 'wp_ai_client_prompt' ) ) {\n\t\treturn new WP_Error(\n\t\t\t'ai_client_unavailable',\n\t\t\t'WordPress AI Client is not available. This plugin requires WordPress 7.0 .',\n\t\t\tarray( 'status' =&gt; 500 )\n\t\t);\n\t}\n\n\tif ( function_exists( 'wp_supports_ai' ) && ! wp_supports_ai() ) {\n\t\treturn new WP_Error(\n\t\t\t'ai_disabled',\n\t\t\t'AI support is disabled on this site.',\n\t\t\tarray( 'status' =&gt; 403 )\n\t\t);\n\t}\n\t...\n}<\/code><\/pre>\n<p>Im Falle eines Fehlers geben die Pr\u00fcfungen jeweils einen 500- oder 403-Fehler zur\u00fcck.<\/p>\n<p>Der n\u00e4chste Code-Block f\u00fchrt die folgenden Aktionen durch:<\/p>\n<ul>\n<li>Extrahiert die ID der Audiodatei aus der Anfrage<\/li>\n<li>Stellt sicher, dass die ID der Audiodatei eine positive ganze Zahl ist<\/li>\n<li>Pr\u00fcft den Dateityp<\/li>\n<li>Ruft den MIME-Typ ab<\/li>\n<li>Extrahiert den Dateiinhalt und kodiert ihn in Base64<\/li>\n<\/ul>\n<pre><code class=\"language-php\">$audio_id = absint( $request-&gt;get_param( 'audio_id' ) );\nif ( ! $audio_id ) {\n\treturn new WP_Error( 'invalid_audio_id', 'Invalid audio ID.', array( 'status' =&gt; 400 ) );\n}\n\n$attachment = get_post( $audio_id );\nif ( ! $attachment || 'attachment' !== $attachment-&gt;post_type ) {\n\treturn new WP_Error( 'audio_not_found', 'Audio attachment not found.', array( 'status' =&gt; 404 ) );\n}\n\n$mime_type = (string) get_post_mime_type( $audio_id );\nif ( 0 !== strpos( $mime_type, 'audio\/' ) ) {\n\treturn new WP_Error( 'invalid_audio_type', 'Attachment must be an audio file.', array( 'status' =&gt; 400 ) );\n}\n\n$audio_path = get_attached_file( $audio_id );\nif ( ! $audio_path || ! file_exists( $audio_path ) ) {\n\treturn new WP_Error( 'audio_path_missing', 'Audio file path not found on server.', array( 'status' =&gt; 404 ) );\n}\n\n$audio_bytes = file_get_contents( $audio_path );\nif ( false === $audio_bytes ) {\n\treturn new WP_Error( 'audio_read_failed', 'Unable to read audio file.', array( 'status' =&gt; 500 ) );\n}\n\n$audio_base64 = base64_encode( $audio_bytes );<\/code><\/pre>\n<figure id=\"attachment_211767\" aria-describedby=\"caption-attachment-211767\" style=\"width: 1594px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-211767 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2026\/06\/mime-type-error.png\" alt=\"Fehler: Ung\u00fcltiger Dateityp\" width=\"1594\" height=\"1190\"><figcaption id=\"caption-attachment-211767\" class=\"wp-caption-text\">Es wird eine Fehlermeldung ausgegeben, wenn der Nutzer versucht, einen ung\u00fcltigen Dateityp zu verarbeiten<\/figcaption><\/figure>\n<p>Damit wurde die Bin\u00e4rdatei in eine Zeichenkette umgewandelt, die an den KI-Client \u00fcbergeben werden kann. Jetzt k\u00f6nnen wir mit dem Extrahieren des Textes fortfahren:<\/p>\n<pre><code class=\"language-php\">$output_language = self::get_output_language();\n\n$transcription_builder = wp_ai_client_prompt(\n\t\"Transcribe this voice note accurately into $output_language. Return plain text only.\"\n)\n\t-&gt;with_file( $audio_base64, $mime_type )\n\t-&gt;using_temperature( 0.1 );\n\nif ( ! $transcription_builder-&gt;is_supported_for_text_generation() ) {\n\treturn new WP_Error(\n\t\t'no_supported_model',\n\t\t'No configured AI model can process this request. Configure a provider in Settings &gt; Connectors.',\n\t\tarray( 'status' =&gt; 400 )\n\t);\n}\n\n$transcript = $transcription_builder-&gt;generate_text();<\/code><\/pre>\n<p>Hier ist eine \u00dcbersicht dar\u00fcber, was der obige Code macht.<\/p>\n<ul>\n<li><code>get_output_language()<\/code> ist eine statische Methode, die an anderer Stelle im Skript definiert ist und die L\u00e4ndereinstellung der Website zur\u00fcckgibt. (Siehe <a href=\"https:\/\/github.com\/carlodaniele\/ai-content-builder\/blob\/35ef318c10768969e235c89617a59cc4b6b38eb4\/ai-content-builder.php#L135\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub<\/a>.)<\/li>\n<li><code>wp_ai_client_prompt()<\/code> initialisiert eine neue Anfrage, indem die Haupt-Eingabeaufforderung \u00fcbergeben wird.<\/li>\n<li><code>with_file()<\/code> Teilt dem KI-Client mit, dass wir eine multimodale Anfrage senden; er akzeptiert den Dateiinhalt in Base64 und den MIME-Typ.<\/li>\n<li><code>using_temperature()<\/code> erm\u00f6glicht es dir, den Grad des Determinismus der Antwort festzulegen. Wir setzen einen niedrigen Wert, um eine originalgetreue Transkription des Audios zu erhalten.<\/li>\n<li>Die Methode <code>is_supported_for_text_generation()<\/code>\u00a0pr\u00fcft, ob der KI-Anbieter aus den bereitgestellten Daten Text generieren kann; wenn der Anbieter keine multimodale Eingabe unterst\u00fctzt, bricht das Plugin ab und gibt eine Fehlermeldung zur\u00fcck.<\/li>\n<li>Die Methode <code>generate_text()<\/code>\u00a0initiiert die HTTP-Anfrage.<\/li>\n<\/ul>\n<h3 id=\"second-ai-pass\">3. Die Umwandlung der Audio-Transkription in strukturierte Inhalte<\/h3>\n<p>Da wir nun das Transkript haben, muss das Plugin erneut mit dem KI-Anbieter kommunizieren, um eine strukturierte JSON-Antwort zu erhalten. Dazu m\u00fcssen wir ein strukturiertes Array im JSON-Format definieren.<\/p>\n<pre><code class=\"language-php\">$schema = array(\n\t'type'       =&gt; 'object',\n\t'properties' =&gt; array(\n\t\t'title'    =&gt; array( 'type' =&gt; 'string' ),\n\t\t'sections' =&gt; array(\n\t\t\t'type'  =&gt; 'array',\n\t\t\t'items' =&gt; array(\n\t\t\t\t'type'       =&gt; 'object',\n\t\t\t\t'properties' =&gt; array(\n\t\t\t\t\t'heading'    =&gt; array( 'type' =&gt; 'string' ),\n\t\t\t\t\t'level'      =&gt; array(\n\t\t\t\t\t\t'type' =&gt; 'integer',\n\t\t\t\t\t),\n\t\t\t\t\t'paragraphs' =&gt; array(\n\t\t\t\t\t\t'type'  =&gt; 'array',\n\t\t\t\t\t\t'items' =&gt; array( 'type' =&gt; 'string' ),\n\t\t\t\t\t),\n\t\t\t\t\t'bullet_points' =&gt; array(\n\t\t\t\t\t\t'type'  =&gt; 'array',\n\t\t\t\t\t\t'items' =&gt; array( 'type' =&gt; 'string' ),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\t'required'   =&gt; array( 'heading', 'level', 'paragraphs' ),\n\t\t\t),\n\t\t),\n\t),\n\t'required'   =&gt; array( 'title', 'sections' ),\n);<\/code><\/pre>\n<p>Mit dieser Struktur antwortet die KI mit einem JSON-Objekt, das einen Titel und ein Array von Abschnitten enth\u00e4lt. Jeder Abschnitt muss eine \u00dcberschrift, eine \u00dcberschriftenebene, mindestens einen Absatz und Aufz\u00e4hlungspunkte enthalten.<\/p>\n<p>Nachdem das Schema nun definiert ist, k\u00f6nnen wir mit der Konfiguration der zweiten Anfrage an den KI-Client fortfahren:<\/p>\n<pre><code class=\"language-php\">$structured_json = wp_ai_client_prompt(\n\t\"Convert the following transcript into a concise, blog-ready draft in $output_language.n\" .\n\t\"Return JSON with a post title and body sections.n\" .\n\t\"Each section must have: heading, level (2 or 3), and paragraphs (array).n\" .\n\t\"If useful, include bullet_points (array) for short actionable lists.n\" .\n\t\"Use short, clear headings and readable paragraph text.nn\" .\n\t\"Transcript:n\" . $transcript\n)\n\t-&gt;using_system_instruction( \"You are a professional WordPress content editor. Always write in $output_language (use appropriate spelling, grammar, and conventions for that language variant).\" )\n\t-&gt;using_temperature( 0.4 )\n\t-&gt;as_json_response( $schema )\n\t-&gt;generate_text();\n\nif ( is_wp_error( $structured_json ) ) {\n\treturn $structured_json;\n}<\/code><\/pre>\n<p>Schauen wir uns die wichtigsten Punkte dieses Codes genauer an:<\/p>\n<ul>\n<li><code>using_system_instruction()<\/code> definiert die Persona des Modells.<\/li>\n<li><code>using_temperature( 0.4 )<\/code> legt einen h\u00f6heren Temperaturwert fest, wodurch die KI mehr kreative Freiheit erh\u00e4lt, um eine Antwort zu generieren und einen fl\u00fcssigeren, reichhaltigeren Text zu produzieren.<\/li>\n<li><code>as_json_response( $schema )<\/code> Weist den Client an, die Antwort in einem strukturierten Format bereitzustellen.<\/li>\n<li>Das Plugin bricht im Fehlerfall ab.<\/li>\n<\/ul>\n<p>Der n\u00e4chste Schritt ist das Dekodieren und Bereinigen der Daten.<\/p>\n<pre><code class=\"language-php\">$structured = json_decode( (string) $structured_json, true );\n\nif ( ! is_array( $structured ) ) {\n\treturn new WP_Error(\n\t\t'invalid_ai_json',\n\t\t'Could not parse structured AI response.',\n\t\tarray( 'status' =&gt; 500 )\n\t);\n}\n\n$normalized = self::normalize_structured_post( $structured );\n\nif ( '' === $normalized['title'] && empty( $normalized['sections'] ) ) {\n\treturn new WP_Error(\n\t\t'empty_structured_content',\n\t\t'The AI provider returned empty structured content.',\n\t\tarray( 'status' =&gt; 500 )\n\t);\n}<\/code><\/pre>\n<p>Im obigen Code:<\/p>\n<ul>\n<li>Die Funktion <code>json_decode()<\/code>\u00a0wandelt die JSON-Zeichenkette in ein assoziatives PHP-Array um.<\/li>\n<li>Ist das JSON fehlerhaft, gibt die folgende Pr\u00fcfung einen 500-Statuscode zusammen mit einer eindeutigen Fehlermeldung zur\u00fcck.<\/li>\n<li>Die statische Methode <code>normalize_structured_post()<\/code>\u00a0bereinigt und normalisiert die Ausgabe des Providers, bevor sie an JavaScript weitergegeben wird (siehe die Definition dieser Funktion auf <a href=\"https:\/\/github.com\/carlodaniele\/ai-content-builder\/blob\/35ef318c10768969e235c89617a59cc4b6b38eb4\/ai-content-builder.php#L476\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub<\/a>).<\/li>\n<\/ul>\n<p>Jetzt muss nur noch die resultierende Ausgabe an JavaScript \u00fcbergeben werden, um native Gutenberg-Bl\u00f6cke zu generieren.<\/p>\n<h3 id=\"block-generation\">4. Gutenberg-f\u00e4hige Ausgabe generieren<\/h3>\n<p>Der n\u00e4chste Schritt besteht darin, die JSON-Ausgabe nativen Gutenberg-Bl\u00f6cken zuzuordnen. Diese Phase findet auf der Client-Seite statt und wird von der Datei <code>editor.js<\/code>\u00a0\u00fcbernommen.<\/p>\n<p>Wenn der Nutzer eine Audiodatei ausw\u00e4hlt, wird der <a href=\"https:\/\/github.com\/carlodaniele\/ai-content-builder\/blob\/35ef318c10768969e235c89617a59cc4b6b38eb4\/editor.js#L342\" target=\"_blank\" rel=\"noopener noreferrer\">folgende Code<\/a> ausgel\u00f6st:<\/p>\n<pre><code class=\"language-javascript\">function AIContentBuilderSidebar() {\n\n\tconst [ audioId, setAudioId ] = useState( 0 );\n\t...\n\n\tconst onSelectAudio = function ( media ) {\n\t\tif ( ! media || ! media.id ) {\n\t\t\treturn;\n\t\t}\n\t\tsetAudioId( media.id );\n\t\tsetAudioLabel( media.title || media.filename || ( 'Audio #'   media.id ) );\n\t\tsetNotice( null );\n\t};\n\t...\n}<\/code><\/pre>\n<p>Dieser Code ruft die ID der aufgenommenen Audiodatei aus der WordPress-Datenbank ab.<\/p>\n<p>Wenn der Nutzer auf die Schaltfl\u00e4che <strong>Inhalt generieren<\/strong>\u00a0klickt, sendet die <a href=\"https:\/\/github.com\/carlodaniele\/ai-content-builder\/blob\/35ef318c10768969e235c89617a59cc4b6b38eb4\/editor.js#L382\" target=\"_blank\" rel=\"noopener noreferrer\">Funktion <code>onGenerate()<\/code><\/a> \u00fcber <code>apiFetch()<\/code>\u00a0eine POST-Anfrage an den API-Endpunkt, die unter anderem die Audio-ID enth\u00e4lt.<\/p>\n<pre><code class=\"language-javascript\">const onGenerate = async function () {\n\n\t...\n\n\ttry {\n\t\tconst response = await apiFetch( {\n\t\t\tpath: AICBData.restPath,\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'X-WP-Nonce': AICBData.nonce,\n\t\t\t},\n\t\t\tdata: {\n\t\t\t\taudio_id: audioId,\n\t\t\t},\n\t\t} );\n\t\t...\n\t}\n\t...\n}<\/code><\/pre>\n<ul>\n<li><code>await<\/code> Die Funktion wird vor\u00fcbergehend angehalten, um zu verhindern, dass der Browser w\u00e4hrend des Wartens auf die Antwort der KI einfriert.<\/li>\n<li>Sobald die Antwort eingegangen ist, wird das JSON-Objekt vor\u00fcbergehend in der Variablen <code>response<\/code>\u00a0gespeichert.<\/li>\n<\/ul>\n<p>Der Inhalt der Variablen <code>response<\/code>\u00a0ist ein Objekt mit folgender Struktur:<\/p>\n<pre><code class=\"language-json\">{\n\ttitle: \"Two Wheels to the Medina: ...\",\n\tsections: [\n\t\t{\n\t\t\theading: \"A Well-Deserved Rest in the Red City\",\n\t\t\tlevel: 2,\n\t\t\tparagraphs: [ \"On April 24th, our group of seven motorcyclists...\" ],\n\t\t\tbullet_points: []\n\t\t},\n\t\t{\n\t\t\theading: \"Diving into the Medina and Jemaa el-Fnaa\",\n\t\t\tlevel: 2,\n\t\t\tparagraphs: [ \"We spent the day exploring the historic Medina...\" ],\n\t\t\tbullet_points: [ \n\t\t\t\t\"Navigating the vibrant, maze-like alleys of the ancient Medina\", \n\t\t\t\t\"Tasting traditional Berber tagines and Moroccan mint tea\",\n\t\t\t\t\"Shopping for handmade leather goods, spices, and lanterns in the souks\" \n\t\t\t]\n\t\t},\n\t\t{...}\n\t],\n\tcontent: \"Fallback plain text...\",\n\ttranscript: \"Full transcript...\"\n}<\/code><\/pre>\n<p>Dieses Objekt liefert die notwendigen Daten zum Erstellen der Bl\u00f6cke. Das Skript kann jedoch entweder eine JSON-Zeichenkette oder in einem Objekt verschachteltes JSON erhalten. Daher ist vor dem Extrahieren der Daten f\u00fcr die Blockgenerierung ein zus\u00e4tzlicher Normalisierungsschritt erforderlich:<\/p>\n<pre><code class=\"language-javascript\">const normalizedSections = normalizeSectionsPayload( response.sections );<\/code><\/pre>\n<ul>\n<li>Die Funktion <code>normalizeSectionsPayload()<\/code> normalisiert ungewisse <code>sections<\/code>-Payloads in ein Array. (Siehe <a href=\"https:\/\/github.com\/carlodaniele\/ai-content-builder\/blob\/35ef318c10768969e235c89617a59cc4b6b38eb4\/editor.js#L171\" target=\"_blank\" rel=\"noopener noreferrer\">Code auf GitHub<\/a>.)<\/li>\n<\/ul>\n<p>Anschlie\u00dfend wird die Variable <code>normalizedSections<\/code>\u00a0als Argument an die <a href=\"https:\/\/github.com\/carlodaniele\/ai-content-builder\/blob\/35ef318c10768969e235c89617a59cc4b6b38eb4\/editor.js#L60\" target=\"_blank\" rel=\"noopener noreferrer\">Funktion<\/a> \u00fcbergeben, die die <code>sections<\/code>-Felder in native Gutenberg-Bl\u00f6cke umwandelt:<\/p>\n<pre><code class=\"language-javascript\">const structuredBlocks = buildBlocksFromSections( normalizedSections );<\/code><\/pre>\n<p>Hier ist ein Auszug aus der Funktion <code>buildBlocksFromSections()<\/code>:<\/p>\n<pre><code class=\"language-javascript\">function buildBlocksFromSections( sections ) {\n\tif ( ! Array.isArray( sections ) ) {\n\t\treturn [];\n\t}\n\n\tconst blocks = [];\n\n\tsections.forEach( function ( section ) {\n\t\tif ( ! section || 'object' !== typeof section ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst heading =\n\t\t\t\t( 'string' === typeof section.heading )\n\t\t\t\t\t? section.heading.trim()\n\t\t\t\t\t: '';\n\n\t\t\tconst level = ( 3 === section.level ) ? 3 : 2;\n\n\t\t\tif ( heading ) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tcreateBlock( 'core\/heading', {\n\t\t\t\t\t\tcontent: heading,\n\t\t\t\t\t\tlevel: level,\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t...\n\n\t\t} );\n\treturn blocks;\n}<\/code><\/pre>\n<p>Im obigen Code durchl\u00e4uft die Schleife <code>forEach()<\/code> das Daten-Array und extrahiert <code>section.heading<\/code> und <code>section.level<\/code>, die von der nativen Funktion <code>createBlock()<\/code>\u00a0verwendet werden.<\/p>\n<p>F\u00fcr die Zuordnung von <code>section.paragraphs<\/code>\u00a0und <code>section.bullet_points<\/code>\u00a0schau dir bitte den <a href=\"https:\/\/github.com\/carlodaniele\/ai-content-builder\/blob\/35ef318c10768969e235c89617a59cc4b6b38eb4\/editor.js#L60\" target=\"_blank\" rel=\"noopener noreferrer\">Quellcode auf GitHub<\/a> an.<\/p>\n<h2>Unbegrenzte Erweiterungsm\u00f6glichkeiten<\/h2>\n<p>Die Einf\u00fchrung von KI in WordPress er\u00f6ffnet sowohl Website-Administratoren als auch Entwicklern v\u00f6llig neue Horizonte. W\u00e4hrend du fr\u00fcher eine komplette Netzwerkinfrastruktur von Grund auf neu aufbauen musstest, nur um KI-Funktionen in deine WordPress-Website zu integrieren, ist es mittlerweile bemerkenswert einfach geworden, deinen redaktionellen Workflow zu automatisieren und KI-gest\u00fctzte Funktionen hinzuzuf\u00fcgen.<\/p>\n<p>Das im zweiten Teil dieses Artikels vorgestellte Beispiel-Plugin beleuchtet nur einen einzigen Anwendungsfall. Es zeigt jedoch deutlich, wie du nun Tools entwickeln kannst, die die Website-Verwaltung und die Bearbeitung von Inhalten drastisch vereinfachen. Dar\u00fcber hinaus erschlie\u00dft diese Architektur fortschrittliche Funktionen, deren Umsetzung bisher entweder zu komplex oder zu kostspielig war.<\/p>\n<p>Und doch stehen wir erst am Anfang. K\u00fcnstliche Intelligenz ist eine sich st\u00e4ndig weiterentwickelnde Realit\u00e4t, die zweifellos eine massive Innovationswelle ausl\u00f6sen wird.<\/p>\n<p>Apropos Innovation\u2026 Hast du das Hosting von Kinsta schon ausprobiert? Wenn du deine Website mit der absolut besten Technologie ausstatten m\u00f6chtest, die es heute f\u00fcr WordPress gibt, <a href=\"https:\/\/kinsta.com\/de\/preise\/\">probier Kinsta ganz ohne Risiko aus<\/a> oder <a href=\"https:\/\/kinsta.com\/de\/mit-dem-vertrieb-sprechen\/\">wende dich an unser Vertriebsteam<\/a>, um mehr zu erfahren.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vor WordPress 7.0 mussten Plugins, die KI-Funktionen hinzuf\u00fcgten, einen API-Schl\u00fcssel anfordern und verwalten, um mit einem KI-Anbieter zu kommunizieren. Das brachte einige Nachteile hinsichtlich des Code-Umfangs &#8230;<\/p>\n","protected":false},"author":36,"featured_media":76894,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[999],"class_list":["post-76893","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-wordpress-entwicklung"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>WordPress-KI-Integration: Architektur und ein Beispiel aus der Praxis<\/title>\n<meta name=\"description\" content=\"Entdecke die neue KI-Infrastruktur von WordPress. Lerne ihre native Architektur, die internen Arbeitsabl\u00e4ufe und einen praktischen Anwendungsfall f\u00fcr die Umwandlung von Audio in Text kennen.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WordPress-KI-Integration: Ein detaillierter Einblick in die Architektur und ein Anwendungsbeispiel aus der Praxis\" \/>\n<meta property=\"og:description\" content=\"Entdecke die neue KI-Infrastruktur von WordPress. Lerne ihre native Architektur, die internen Arbeitsabl\u00e4ufe und einen praktischen Anwendungsfall f\u00fcr die Umwandlung von Audio in Text kennen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-22T12:40:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-28T09:29:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/07\/wordpress-ai-integration-a-deep-dive-into-architecture-and-a-real-world-use-case.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Carlo Daniele\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Entdecke die neue KI-Infrastruktur von WordPress. Lerne ihre native Architektur, die internen Arbeitsabl\u00e4ufe und einen praktischen Anwendungsfall f\u00fcr die Umwandlung von Audio in Text kennen.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/07\/wordpress-ai-integration-a-deep-dive-into-architecture-and-a-real-world-use-case.png\" \/>\n<meta name=\"twitter:creator\" content=\"@carlodaniele\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Daniele\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"28\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/\"},\"author\":{\"name\":\"Carlo Daniele\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\"},\"headline\":\"WordPress-KI-Integration: Ein detaillierter Einblick in die Architektur und ein Anwendungsbeispiel aus der Praxis\",\"datePublished\":\"2026-07-22T12:40:53+00:00\",\"dateModified\":\"2026-07-28T09:29:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/\"},\"wordCount\":4124,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/07\/wordpress-ai-integration-a-deep-dive-into-architecture-and-a-real-world-use-case.png\",\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/\",\"name\":\"WordPress-KI-Integration: Architektur und ein Beispiel aus der Praxis\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/07\/wordpress-ai-integration-a-deep-dive-into-architecture-and-a-real-world-use-case.png\",\"datePublished\":\"2026-07-22T12:40:53+00:00\",\"dateModified\":\"2026-07-28T09:29:57+00:00\",\"description\":\"Entdecke die neue KI-Infrastruktur von WordPress. Lerne ihre native Architektur, die internen Arbeitsabl\u00e4ufe und einen praktischen Anwendungsfall f\u00fcr die Umwandlung von Audio in Text kennen.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/07\/wordpress-ai-integration-a-deep-dive-into-architecture-and-a-real-world-use-case.png\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/07\/wordpress-ai-integration-a-deep-dive-into-architecture-and-a-real-world-use-case.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WordPress Entwicklung\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/wordpress-entwicklung\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"WordPress-KI-Integration: Ein detaillierter Einblick in die Architektur und ein Anwendungsbeispiel aus der Praxis\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/de\/#website\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\",\"name\":\"Carlo Daniele\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"caption\":\"Carlo Daniele\"},\"description\":\"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.\",\"sameAs\":[\"https:\/\/frammentidicodice.com\/\",\"https:\/\/x.com\/carlodaniele\"],\"url\":\"https:\/\/kinsta.com\/de\/blog\/author\/carlodaniele\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"WordPress-KI-Integration: Architektur und ein Beispiel aus der Praxis","description":"Entdecke die neue KI-Infrastruktur von WordPress. Lerne ihre native Architektur, die internen Arbeitsabl\u00e4ufe und einen praktischen Anwendungsfall f\u00fcr die Umwandlung von Audio in Text kennen.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/","og_locale":"de_DE","og_type":"article","og_title":"WordPress-KI-Integration: Ein detaillierter Einblick in die Architektur und ein Anwendungsbeispiel aus der Praxis","og_description":"Entdecke die neue KI-Infrastruktur von WordPress. Lerne ihre native Architektur, die internen Arbeitsabl\u00e4ufe und einen praktischen Anwendungsfall f\u00fcr die Umwandlung von Audio in Text kennen.","og_url":"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2026-07-22T12:40:53+00:00","article_modified_time":"2026-07-28T09:29:57+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/07\/wordpress-ai-integration-a-deep-dive-into-architecture-and-a-real-world-use-case.png","type":"image\/png"}],"author":"Carlo Daniele","twitter_card":"summary_large_image","twitter_description":"Entdecke die neue KI-Infrastruktur von WordPress. Lerne ihre native Architektur, die internen Arbeitsabl\u00e4ufe und einen praktischen Anwendungsfall f\u00fcr die Umwandlung von Audio in Text kennen.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/07\/wordpress-ai-integration-a-deep-dive-into-architecture-and-a-real-world-use-case.png","twitter_creator":"@carlodaniele","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Carlo Daniele","Gesch\u00e4tzte Lesezeit":"28\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/"},"author":{"name":"Carlo Daniele","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63"},"headline":"WordPress-KI-Integration: Ein detaillierter Einblick in die Architektur und ein Anwendungsbeispiel aus der Praxis","datePublished":"2026-07-22T12:40:53+00:00","dateModified":"2026-07-28T09:29:57+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/"},"wordCount":4124,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/07\/wordpress-ai-integration-a-deep-dive-into-architecture-and-a-real-world-use-case.png","inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/","url":"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/","name":"WordPress-KI-Integration: Architektur und ein Beispiel aus der Praxis","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/07\/wordpress-ai-integration-a-deep-dive-into-architecture-and-a-real-world-use-case.png","datePublished":"2026-07-22T12:40:53+00:00","dateModified":"2026-07-28T09:29:57+00:00","description":"Entdecke die neue KI-Infrastruktur von WordPress. Lerne ihre native Architektur, die internen Arbeitsabl\u00e4ufe und einen praktischen Anwendungsfall f\u00fcr die Umwandlung von Audio in Text kennen.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/07\/wordpress-ai-integration-a-deep-dive-into-architecture-and-a-real-world-use-case.png","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2026\/07\/wordpress-ai-integration-a-deep-dive-into-architecture-and-a-real-world-use-case.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/wordpress-ki\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"WordPress Entwicklung","item":"https:\/\/kinsta.com\/de\/thema\/wordpress-entwicklung\/"},{"@type":"ListItem","position":3,"name":"WordPress-KI-Integration: Ein detaillierter Einblick in die Architektur und ein Anwendungsbeispiel aus der Praxis"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/de\/#website","url":"https:\/\/kinsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63","name":"Carlo Daniele","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","caption":"Carlo Daniele"},"description":"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.","sameAs":["https:\/\/frammentidicodice.com\/","https:\/\/x.com\/carlodaniele"],"url":"https:\/\/kinsta.com\/de\/blog\/author\/carlodaniele\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/76893","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=76893"}],"version-history":[{"count":11,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/76893\/revisions"}],"predecessor-version":[{"id":76961,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/76893\/revisions\/76961"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/76893\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/76893\/translations\/it"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/76893\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/76893\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/76893\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/76893\/translations\/nl"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/76893\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/76894"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=76893"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=76893"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=76893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}