{"id":3603,"date":"2026-03-28T07:01:41","date_gmt":"2026-03-28T06:01:41","guid":{"rendered":"https:\/\/isla-stud.io\/?p=3603"},"modified":"2026-03-28T07:01:43","modified_gmt":"2026-03-28T06:01:43","slug":"wordpress-7-ai-klientutvecklare","status":"publish","type":"post","link":"https:\/\/isla-stud.io\/sv\/allgemein\/wordpress-7-ai-client-developer\/","title":{"rendered":"WordPress 7.0 AI-klienten ur en utvecklares perspektiv"},"content":{"rendered":"<p>WordPress 7.0 har en inbyggd AI-klient. Inte som ett plugin, inte som en experimentell funktionsflagga, utan som en del av k\u00e4rnan. Det \u00e4r ett uttalande.<\/p>\n\n\n\n<p>Jag har utvecklat WordPress-plugins sedan 2009 och har arbetat med <a href=\"https:\/\/citelayer.ai\" target=\"_blank\" rel=\"noopener\">Citadellagret\u00ae<\/a> Jag har sj\u00e4lv byggt ett AI-plugin som p\u00e5verkas direkt av detta arkitektoniska beslut. H\u00e4r \u00e4r min tekniska analys: Vad kan API:et g\u00f6ra, vilka \u00e4r dess styrkor och vad beh\u00f6ver plugin-utvecklare veta?<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Inneh\u00e5llsf\u00f6rteckning<\/h2><nav><ol><li><a href=\"#der-entry-point-wp-ai-client-prompt\">Ing\u00e5ngspunkten: wp_ai_client_prompt()<\/a><\/li><li><a href=\"#mehr-als-text-bild-sprache-video\">Mer \u00e4n text: Bild, spr\u00e5k, video<\/a><\/li><li><a href=\"#feature-detection-keine-annahmen-treffen\">Feature Detection: G\u00f6r inga antaganden<\/a><\/li><li><a href=\"#model-preferences-statt-requirements\">Modellera preferenser ist\u00e4llet f\u00f6r krav<\/a><\/li><li><a href=\"#strukturierte-antworten-mit-json-schema\">Strukturerade svar med JSON-schema<\/a><\/li><li><a href=\"#die-zwei-schichten-architektur\">Arkitektur med tv\u00e5 lager<\/a><\/li><li><a href=\"#granulare-kontrolle-der-filter\">Granul\u00e4r kontroll: Filtret<\/a><\/li><li><a href=\"#starken-und-schwachen\">Styrkor och svagheter<\/a><\/li><li><a href=\"#was-das-fur-bestehende-plugins-bedeutet\">Vad detta inneb\u00e4r f\u00f6r befintliga plugins<\/a><\/li><li><a href=\"#fazit\">Inte en pryl utan infrastruktur<\/a><\/li><\/ol><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"der-entry-point-wp-ai-client-prompt\">Ing\u00e5ngspunkten: <code>wp_ai_client_prompt()<\/code><\/h2>\n\n\n\n<p>Allt b\u00f6rjar med en enda funktion:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">$builder = wp_ai_client_prompt();<\/code><\/pre>\n\n\n\n<p>Detta ger en <code>WP_AI_Klient_Prompt_Builder<\/code>-objekt - en Fluent Builder via vilken prompt, konfiguration och genereringsmetod \u00e4r l\u00e4nkade. Grundprincipen: Utvecklaren beskriver, <strong>vad<\/strong> han beh\u00f6ver. WordPress tar hand om <strong>som<\/strong>.<\/p>\n\n\n\n<p>Ett enkelt exempel p\u00e5 textgenerering:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">\/\/ Fr\u00e5ga direkt som en parameter - bekv\u00e4mt f\u00f6r enkla fall\n$text = wp_ai_client_prompt( 'Sammanfatta f\u00f6rdelarna med cachelagring i WordPress.' )\n    -&gt;anv\u00e4nda_temperatur( 0.7 )\n    -&gt;generate_text();\n\n\/\/ Felhantering som \u00f6verallt i WordPress: Kontrollera WP_Error\nif ( is_wp_error( $text ) ) {\n    returnera;\n}\n\necho wp_kses_post( $text );<\/code><\/pre>\n\n\n\n<p>Fr\u00e5getexten kan st\u00e4llas in som en parameter eller via <code>med_text()<\/code> Det senare \u00e4r anv\u00e4ndbart om prompten s\u00e4tts samman dynamiskt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"mehr-als-text-bild-sprache-video\">Mer \u00e4n text: Bild, spr\u00e5k, video<\/h2>\n\n\n\n<p>API:et \u00e4r multimodalt. Bildgenereringen fungerar enligt samma m\u00f6nster:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">anv&auml;nda WordPress\\AiClient\\Files\\DTO\\File;\n\n$image = wp_ai_client_prompt( &#039;En futuristisk WordPress-logotyp i neonstil&#039; )\n    -&amp;gt;generera_bild();\n\nif ( is_wp_error( $image ) ) {\n    returnera;\n}\n\n\/\/ Fil-DTO med data-URI - direkt anv&auml;ndbar\necho &#039;&lt;img src=&quot;&#039; . esc_url( $image-&gt;getDataUri() ) . &#039;&quot; data-no-translation=&quot;&quot; data-no-auto-translation=&quot;&quot;&gt;&#039;;<\/code><\/pre>\n\n\n\n<p>F\u00f6r variationer finns det <code>generera_bilder( 4 )<\/code> och <code>generera_texter( 4 )<\/code>. Dessutom <code>convert_text_to_speech_result()<\/code>, <code>generate_speech_result()<\/code> och <code>generera_video_resultat()<\/code>. WordPress t\u00e4cker alla vanliga modaliteter.<\/p>\n\n\n\n<p>S\u00e4rskilt sp\u00e4nnande: multimodala resultat i en enda unders\u00f6kning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">anv\u00e4nda WordPress\\AiClient\\Messages\\Enums\\ModalityEnum;\n\n\/\/ Text och bilder i ett svar - resultatet inneh\u00e5ller b\u00e5da\n$result = wp_ai_client_prompt( 'Skapa ett recept med foton f\u00f6r varje steg.' )\n    -&gt;as_output_modalities( ModalityEnum::text(), ModalityEnum::image() )\n    -&gt;generera_resultat();<\/code><\/pre>\n\n\n\n<p>Detta \u00f6ppnar d\u00f6rren f\u00f6r plugins som genererar inneh\u00e5ll som g\u00e5r l\u00e4ngre \u00e4n ren text.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"feature-detection-keine-annahmen-treffen\">Feature Detection: G\u00f6r inga antaganden<\/h2>\n\n\n\n<p>Inte alla WordPress-installationer kommer att ha en AI-leverant\u00f6r konfigurerad. Och inte alla leverant\u00f6rer st\u00f6der alla modaliteter. API:et erbjuder deterministiska kontroller:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">$builder = wp_ai_client_prompt( 'test' )\n    -&gt;anv\u00e4nder_temperatur( 0.7 );\n\n\/\/ Inget API-anrop - rent logisk kontroll mot tillg\u00e4ngliga leverant\u00f6rer\nif ( $builder-&gt;is_supported_for_text_generation() ) {\n    \/\/ Visa anv\u00e4ndargr\u00e4nssnitt f\u00f6r textgenerering\n}\n\nif ( $builder-&gt;is_supported_for_image_generation() ) {\n    \/\/ Visa knapp f\u00f6r bildgenerering\n}<\/code><\/pre>\n\n\n\n<p>Det \u00e4r en ren l\u00f6sning. Kontrollerna kostar ingenting - inga API-anrop, ingen latens. Plugin-utvecklare kan ladda sitt anv\u00e4ndargr\u00e4nssnitt villkorligt och visa en anv\u00e4ndbar ledtr\u00e5d om ingen AI \u00e4r tillg\u00e4nglig. Det \u00e4r regeln: <strong>Utg\u00e5 aldrig fr\u00e5n att AI-funktioner kommer att fungera bara f\u00f6r att WordPress 7.0 \u00e4r installerat.<\/strong><\/p>\n\n\n\n<p>Tillg\u00e4ngliga kontroller: <code>is_supported_for_text_generation()<\/code>, <code>is_supported_for_image_generation()<\/code>, <code>is_supported_for_text_to_speech_conversion()<\/code>, <code>is_supported_for_speech_generation()<\/code>, <code>is_supported_for_video_generation()<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"model-preferences-statt-requirements\">Modellera preferenser ist\u00e4llet f\u00f6r krav<\/h2>\n\n\n\n<p>H\u00e4r blir designfilosofin tydlig:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">$result = wp_ai_client_prompt( 'F\u00f6rklara tryckningens historia.' )\n    -&gt;anv\u00e4nda_temperatur( 0.1 )\n    -&gt;anv\u00e4nda_modell_preferens(\n        'claude-sonnet-4-6',\n        'gemini-3.1-pro-preview',\n        'gpt-5.4'\n    )\n    -&gt;generera_text_resultat();<\/code><\/pre>\n\n\n\n<p><code>anv\u00e4nda_modell_preferens()<\/code> \u00e4r en <strong>F\u00f6retr\u00e4de<\/strong>, inget krav. AI-klienten tar den f\u00f6rsta tillg\u00e4ngliga modellen fr\u00e5n listan - eller n\u00e5gon kompatibel modell om ingen av dem \u00e4r konfigurerad. Plugin-koden fungerar alltid, oavsett leverant\u00f6r.<\/p>\n\n\n\n<p>Detta \u00e4r r\u00e4tt beslut. Plugin-utvecklare b\u00f6r aldrig vara beroende av att en viss modell \u00e4r tillg\u00e4nglig. Den officiella rekommendationen \u00e4r att sortera dina modeller s\u00e5 att nyare kommer f\u00f6re \u00e4ldre. De tre officiella leverant\u00f6rspluginsen f\u00f6r lanseringen g\u00f6r redan detta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"strukturierte-antworten-mit-json-schema\">Strukturerade svar med JSON-schema<\/h2>\n\n\n\n<p>Detta \u00e4r en h\u00f6jdpunkt f\u00f6r plugins som kr\u00e4ver strukturerad data - och det finns m\u00e5nga av dem:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">$schema = array(\n    'type' =&gt; 'array',\n    'items' =&gt; matris(\n        'typ' =&gt; 'objekt',\n        'properties' =&gt; array(\n            'plugin_name' =&gt; array( 'type' =&gt; 'string' ),\n            'category' =&gt; array( 'type' =&gt; 'string' ),\n        ),\n        'required' =&gt; array( 'plugin_name', 'category' ),\n    ),\n);\n\n$json = wp_ai_client_prompt( 'Lista 5 popul\u00e4ra WordPress-insticksprogram med kategori.' )\n    -&gt;as_json_response( $schema )\n    -&gt;generera_text();\n\n\/\/ Strukturerad data direkt som en array - ingen manuell parsning kr\u00e4vs\n$data = json_decode( $json, true );<\/code><\/pre>\n\n\n\n<p>Detta \u00e4r guld v\u00e4rt f\u00f6r SEO-plugins, formul\u00e4rplugins och verktyg f\u00f6r inneh\u00e5llsanalys. I st\u00e4llet f\u00f6r att analysera ostrukturerad text f\u00e5r du direkt anv\u00e4ndbara data.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"die-zwei-schichten-architektur\">Arkitektur med tv\u00e5 lager<\/h2>\n\n\n\n<p>Under motorhuven best\u00e5r AI Client av tv\u00e5 niv\u00e5er:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>PHP AI-klient<\/strong> (<code>wordpress\/php-ai-klient<\/code>) - en leverant\u00f6rs-agnostisk PHP SDK, buntad som ett externt bibliotek i Core. CamelCase-metoder, undantag, tekniskt WordPress-oberoende.<\/li>\n\n\n\n<li><strong>WordPress Omslag<\/strong> \u2014 <code>WP_AI_Klient_Prompt_Builder<\/code> utvecklar SDK i WordPress-konventioner: snake_case-metoder, <code>WP_Fel<\/code> ist\u00e4llet f\u00f6r undantag, integration med WordPress HTTP Transport, Abilities API, Connectors-infrastruktur och hook-systemet.<\/li>\n<\/ol>\n\n\n\n<p>Detta \u00e4r en elegant separation. PHP SDK kan teoretiskt sett ocks\u00e5 anv\u00e4ndas utanf\u00f6r WordPress. WordPress-omslaget g\u00f6r det idiomatiskt. Och det <code>GenerativAiResultat<\/code>-objektet kan serialiseras och kan anslutas direkt till <code>rest_ensure_response()<\/code> REST API-integration direkt fr\u00e5n start:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">function my_rest_callback( WP_REST_Request $request ) {\n    $result = wp_ai_client_prompt( $request-&gt;get_param( 'prompt' ) )\n        -&gt;generate_text_result();\n\n    \/\/ WP_Error oder GenerativeAiResult \u2014 beides funktioniert\n    return rest_ensure_response( $result );\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"granulare-kontrolle-der-filter\">Granul\u00e4r kontroll: Filtret<\/h2>\n\n\n\n<p>F\u00f6r s\u00e4kerhet och efterlevnad finns det <code>wp_ai_client_prevent_prompt<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">add_filter(\n    'wp_ai_client_prevent_prompt',\n    function ( bool $prevent, WP_AI_Client_Prompt_Builder $builder ): bool {\n        \/\/ Exempel: AI endast f\u00f6r administrat\u00f6rer\n        if ( ! current_user_can( 'manage_options' ) ) {\n            return true;\n        }\n        return $prevent;\n    },\n    10,\n    2\n);<\/code><\/pre>\n\n\n\n<p>Om en prompt \u00e4r blockerad: inget API-anrop, <code>is_supported_*()<\/code> ger <code>falska<\/code> tillbaka, <code>generera_*()<\/code> F\u00f6rn\u00f6denheter <code>WP_Fel<\/code>. Ren, f\u00f6ruts\u00e4gbar, inga t\u00e4vlingsf\u00f6rh\u00e5llanden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"starken-und-schwachen\">Styrkor och svagheter<\/h2>\n\n\n\n<p><strong>Vilket \u00e4r en bra l\u00f6sning:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Abstraktion av leverant\u00f6r. Plugin-utvecklare beh\u00f6ver aldrig hantera API-nycklar, prisgr\u00e4nser eller leverant\u00f6rens egenheter.<\/li>\n\n\n\n<li>Funktionsdetektering utan API-anrop. Inget gissande om n\u00e5got fungerar.<\/li>\n\n\n\n<li>WordPress-konventionerna. <code>WP_Fel<\/code>, krokar, REST-kompatibilitet - det k\u00e4nns naturligt.<\/li>\n\n\n\n<li>St\u00f6d f\u00f6r JSON-schema. Strukturerade svar st\u00f6ds i f\u00f6rsta klass.<\/li>\n\n\n\n<li>Den tv\u00e5delade arkitekturen. Ren separation mellan SDK och WordPress-integration.<\/li>\n<\/ul>\n\n\n\n<p><strong>Vad jag observerar kritiskt:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Webbplats\u00e4garen \u00e4r ansvarig f\u00f6r konfigurationen av anslutningen. Plugins har inget inflytande p\u00e5 detta, <strong>om<\/strong> en leverant\u00f6r \u00e4r konfigurerad. Feature Detection f\u00e5ngar upp detta, men UX-utmaningen kvarst\u00e5r.<\/li>\n\n\n\n<li>Modellandskapet r\u00f6r sig snabbt. Det \u00e5terst\u00e5r att se hur v\u00e4l preferenslistan kommer att \u00e5ldras n\u00e4r nya modeller dyker upp var tredje m\u00e5nad.<\/li>\n\n\n\n<li>Konsekvenserna f\u00f6r prestandan \u00e4r fortfarande oklara. Hur beter sig systemet under belastning n\u00e4r 10 plugins skickar uppmaningar samtidigt?<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"was-das-fur-bestehende-plugins-bedeutet\">Vad detta inneb\u00e4r f\u00f6r befintliga plugins<\/h2>\n\n\n\n<p>Varje plugin som f\u00f6r n\u00e4rvarande har sina egna AI-integrationer st\u00e5r inf\u00f6r ett beslut: Beh\u00e5ll din egen API-anslutning eller migrera till AI-klienten?<\/p>\n\n\n\n<p>F\u00f6r <strong>SEO-till\u00e4gg<\/strong> svaret \u00e4r tydligt - strukturerad data, inneh\u00e5llsanalys och generering av metabeskrivningar k\u00f6rs mycket renare via AI-klienten. F\u00f6r <strong>Plugins f\u00f6r formul\u00e4r<\/strong> \u00f6ppnar upp intelligent f\u00e4ltvalidering och automatisk ifyllning. F\u00f6r <strong>Plugins f\u00f6r e-handel<\/strong> AI-genererade produktbeskrivningar blir pl\u00f6tsligt triviala.<\/p>\n\n\n\n<p>F\u00f6r ett insticksprogram som <a href=\"https:\/\/wordpress.org\/plugins\/citelayer\/\" target=\"_blank\" rel=\"noreferrer noopener\">citelayer\u00ae - AI-synlighet f\u00f6r WordPress<\/a>, som arbetar i gr\u00e4nssnittet mellan WordPress och AI-system, \u00e4r AI-klienten en naturlig f\u00f6rl\u00e4ngning. Citelayer g\u00f6r inneh\u00e5llet l\u00e4sbart f\u00f6r AI - genom llms.txt, schemainjektion, botsp\u00e5rning och protokoll som UCP och WebMCP. AI-klienten skulle kunna komplettera dessa analyslager med mer intelligenta, AI-st\u00f6dda analyser. Jag har f\u00f6rklarat vad detta inneb\u00e4r f\u00f6r AI Visibility i konkreta termer. <a href=\"https:\/\/citelayer.ai\/blog\/wordpress-7-ai-client\" target=\"_blank\" rel=\"noopener\">mer i detalj i Citelayer-bloggen<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"fazit\">Inte en pryl utan infrastruktur<\/h2>\n\n\n\n<p>WordPress 7.0 AI Client \u00e4r inte en pryl. Det \u00e4r en infrastruktur. V\u00e4l genomt\u00e4nkt, WordPress-idiomatisk och med en tydlig designfilosofi: utvecklaren beskriver avsikten, systemet tar hand om utf\u00f6randet.<\/p>\n\n\n\n<p>Alla som utvecklar WordPress-plugins idag b\u00f6r bekanta sig med detta API. Inte f\u00f6r att du m\u00e5ste - utan f\u00f6r att det \u00e4r grunden f\u00f6r n\u00e4sta generation av WordPress-plugins.<\/p>\n\n\n\n<p>Den fullst\u00e4ndiga API-dokumentationen finns tillg\u00e4nglig p\u00e5 <a href=\"https:\/\/make.wordpress.org\/core\/2026\/03\/24\/introducing-the-ai-client-in-wordpress-7-0\/\" target=\"_blank\" rel=\"noopener\">WordPress Skapa blogg<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>WordPress 7.0 AI-klienten i en djupdykning f\u00f6r utvecklare: API-arkitektur, kodexempel, funktionsdetektering och vad detta inneb\u00e4r f\u00f6r befintliga plugins. Fr\u00e5n en plugin-utvecklare som har h\u00e5llit p\u00e5 med det sedan 2009.<\/p>","protected":false},"author":1,"featured_media":3606,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[1,754],"tags":[],"dipi_cpt_category":[],"class_list":["post-3603","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein","category-ki-b2b"],"acf":[],"_links":{"self":[{"href":"https:\/\/isla-stud.io\/sv\/wp-json\/wp\/v2\/posts\/3603","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/isla-stud.io\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/isla-stud.io\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/isla-stud.io\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/isla-stud.io\/sv\/wp-json\/wp\/v2\/comments?post=3603"}],"version-history":[{"count":2,"href":"https:\/\/isla-stud.io\/sv\/wp-json\/wp\/v2\/posts\/3603\/revisions"}],"predecessor-version":[{"id":3607,"href":"https:\/\/isla-stud.io\/sv\/wp-json\/wp\/v2\/posts\/3603\/revisions\/3607"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/isla-stud.io\/sv\/wp-json\/wp\/v2\/media\/3606"}],"wp:attachment":[{"href":"https:\/\/isla-stud.io\/sv\/wp-json\/wp\/v2\/media?parent=3603"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/isla-stud.io\/sv\/wp-json\/wp\/v2\/categories?post=3603"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/isla-stud.io\/sv\/wp-json\/wp\/v2\/tags?post=3603"},{"taxonomy":"dipi_cpt_category","embeddable":true,"href":"https:\/\/isla-stud.io\/sv\/wp-json\/wp\/v2\/dipi_cpt_category?post=3603"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}