{"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-client-developer","status":"publish","type":"post","link":"https:\/\/isla-stud.io\/es\/allgemein\/wordpress-7-ai-client-developer\/","title":{"rendered":"El cliente AI de WordPress 7.0 desde la perspectiva de un desarrollador"},"content":{"rendered":"<p>WordPress 7.0 incorpora un cliente de IA. No como un plugin, no como una caracter\u00edstica experimental, sino como parte del n\u00facleo. Esto es una afirmaci\u00f3n.<\/p>\n\n\n\n<p>Llevo desarrollando plugins para WordPress desde 2009 y he trabajado con <a href=\"https:\/\/citelayer.ai\" target=\"_blank\" rel=\"noopener\">citelayer<\/a> Yo mismo he creado un plugin de IA que se ve directamente afectado por esta decisi\u00f3n arquitect\u00f3nica. He aqu\u00ed mi an\u00e1lisis t\u00e9cnico: \u00bfqu\u00e9 puede hacer la API, cu\u00e1les son sus puntos fuertes y qu\u00e9 deben saber los desarrolladores de plugins?<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>\u00cdndice<\/h2><nav><ol><li><a href=\"#der-entry-point-wp-ai-client-prompt\">El punto de entrada: wp_ai_client_prompt()<\/a><\/li><li><a href=\"#mehr-als-text-bild-sprache-video\">M\u00e1s que texto: Imagen, lenguaje, v\u00eddeo<\/a><\/li><li><a href=\"#feature-detection-keine-annahmen-treffen\">Detecci\u00f3n de caracter\u00edsticas: no haga suposiciones<\/a><\/li><li><a href=\"#model-preferences-statt-requirements\">Modelar preferencias en lugar de requisitos<\/a><\/li><li><a href=\"#strukturierte-antworten-mit-json-schema\">Respuestas estructuradas con esquema JSON<\/a><\/li><li><a href=\"#die-zwei-schichten-architektur\">La arquitectura de dos capas<\/a><\/li><li><a href=\"#granulare-kontrolle-der-filter\">Control granular: el filtro<\/a><\/li><li><a href=\"#starken-und-schwachen\">Puntos fuertes y d\u00e9biles<\/a><\/li><li><a href=\"#was-das-fur-bestehende-plugins-bedeutet\">Qu\u00e9 significa esto para los plugins existentes<\/a><\/li><li><a href=\"#fazit\">No es un artilugio, sino una infraestructura<\/a><\/li><\/ol><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"der-entry-point-wp-ai-client-prompt\">El punto de entrada: <code>wp_ai_client_prompt()<\/code><\/h2>\n\n\n\n<p>Todo empieza con una \u00fanica funci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">$builder = wp_ai_client_prompt();<\/code><\/pre>\n\n\n\n<p>Esto da una <code>WP_AI_Client_Prompt_Builder<\/code>-objeto - un Fluent Builder a trav\u00e9s del cual se vinculan el prompt, la configuraci\u00f3n y el m\u00e9todo de generaci\u00f3n. El principio b\u00e1sico: El desarrollador describe, <strong>qu\u00e9<\/strong> que necesita. WordPress se encarga de <strong>como<\/strong>.<\/p>\n\n\n\n<p>Un ejemplo sencillo de generaci\u00f3n de texto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">\/\/ Preguntar directamente como par\u00e1metro - conveniente para casos sencillos\n$text = wp_ai_client_prompt( 'Resuma los beneficios del almacenamiento en cach\u00e9 en WordPress.' )\n    -&gt;using_temperature( 0.7 )\n    -&gt;generate_text();\n\n\/\/ Manejo de errores como en todas partes en WordPress: Comprobar WP_Error\nif ( is_wp_error( $text ) ) {\n    return;\n}\n\necho wp_kses_post( $text );<\/code><\/pre>\n\n\n\n<p>El texto del aviso puede establecerse como par\u00e1metro o mediante <code>con_texto()<\/code> Esto \u00faltimo es \u00fatil si el aviso se monta din\u00e1micamente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"mehr-als-text-bild-sprache-video\">M\u00e1s que texto: Imagen, lenguaje, v\u00eddeo<\/h2>\n\n\n\n<p>La API es multimodal. La generaci\u00f3n de im\u00e1genes funciona seg\u00fan el mismo patr\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">use WordPress\\AiClient\\Files\\DTO\\File;\n\n$image = wp_ai_client_prompt( &#039;Un logo futurista de WordPress en estilo ne&oacute;n&#039; )\n    -&amp;gt;generate_image();\n\nif ( is_wp_error( $image ) ) {\n    return;\n}\n\n\/\/ Archivo DTO con Data URI - directamente utilizable\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>Para las variaciones existen <code>generar_im\u00e1genes( 4 )<\/code> y <code>generar_textos( 4 )<\/code>. Adem\u00e1s <code>convertir_texto_en_voz_resultado()<\/code>, <code>generar_resultado_de_voz()<\/code> y <code>generar_v\u00eddeo_resultado()<\/code>. WordPress cubre todas las modalidades habituales.<\/p>\n\n\n\n<p>Especialmente emocionante: resultados multimodales en una sola investigaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">use WordPress\\AiClient\\Messages\\Enums\\ModalityEnum;\n\n\/\/ Texto e im\u00e1genes en una respuesta - el resultado contiene ambos\n$result = wp_ai_client_prompt( 'Crear una receta con fotos para cada paso.' )\n    -&gt;as_output_modalities( ModalityEnum::text(), ModalityEnum::image() )\n    -&gt;generate_result();<\/code><\/pre>\n\n\n\n<p>Esto abre la puerta a plugins que generan contenidos que van m\u00e1s all\u00e1 del puro texto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"feature-detection-keine-annahmen-treffen\">Detecci\u00f3n de caracter\u00edsticas: no haga suposiciones<\/h2>\n\n\n\n<p>No todas las instalaciones de WordPress tendr\u00e1n configurado un proveedor de AI. Y no todos los proveedores admiten todas las modalidades. La API ofrece comprobaciones deterministas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">$builder = wp_ai_client_prompt( 'test' )\n    -&gt;using_temperature( 0.7 );\n\n\/\/ No hay llamada a la API - comprobaci\u00f3n puramente l\u00f3gica con los proveedores disponibles\nif ( $builder-&gt;is_supported_for_text_generation() ) {\n    \/\/ Mostrar UI para generaci\u00f3n de texto\n}\n\nif ( $builder-&gt;is_supported_for_image_generation() ) {\n    \/\/ Mostrar bot\u00f3n de generaci\u00f3n de imagen\n}<\/code><\/pre>\n\n\n\n<p>Es una soluci\u00f3n limpia. Las comprobaciones no cuestan nada: no hay llamadas a la API ni latencia. Los desarrolladores de plugins pueden cargar su interfaz de usuario condicionalmente y mostrar una sugerencia \u00fatil si no hay IA disponible. La regla: <strong>Nunca d\u00e9 por sentado que las funciones de AI funcionar\u00e1n s\u00f3lo porque WordPress 7.0 est\u00e9 instalado.<\/strong><\/p>\n\n\n\n<p>Cheques disponibles: <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\">Modelar preferencias en lugar de requisitos<\/h2>\n\n\n\n<p>La filosof\u00eda de dise\u00f1o queda clara aqu\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">$result = wp_ai_client_prompt( 'Explique la historia de la imprenta.' )\n    -&gt;using_temperature( 0.1 )\n    -&gt;using_model_preference(\n        'claude-sonnet-4-6',\n        'gemini-3.1-pro-preview',\n        'gpt-5.4'\n    )\n    -&gt;generate_text_result();<\/code><\/pre>\n\n\n\n<p><code>using_model_preference()<\/code> es un <strong>Preferencia<\/strong>, ning\u00fan requisito. El cliente de IA toma el primer modelo disponible de la lista, o cualquiera compatible si no hay ninguno configurado. El c\u00f3digo del plugin siempre funciona, independientemente del proveedor.<\/p>\n\n\n\n<p>Esta es la decisi\u00f3n correcta. Los desarrolladores de plugins nunca deben depender de que un modelo concreto est\u00e9 disponible. La recomendaci\u00f3n oficial es ordenar los modelos de modo que los m\u00e1s recientes vayan antes que los m\u00e1s antiguos. Los tres plugins proveedores oficiales para el lanzamiento ya lo hacen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"strukturierte-antworten-mit-json-schema\">Respuestas estructuradas con esquema JSON<\/h2>\n\n\n\n<p>Se trata de un punto fuerte para los plugins que requieren datos estructurados, que son muchos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">$schema = array(\n    'type' =&gt; 'array',\n    'items' =&gt; array(\n        'type' =&gt; 'object',\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( 'Enumera 5 plugins populares de WordPress con categor\u00eda.' )\n    -&gt;as_json_response( $schema )\n    -&gt;generate_text();\n\n\/\/ Estructurar los datos directamente como un array - no requiere an\u00e1lisis manual\n$data = json_decode( $json, true );<\/code><\/pre>\n\n\n\n<p>Esto vale su peso en oro para plugins SEO, plugins de formularios y herramientas de an\u00e1lisis de contenidos. En lugar de analizar texto no estructurado, se obtienen datos directamente utilizables.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"die-zwei-schichten-architektur\">La arquitectura de dos capas<\/h2>\n\n\n\n<p>Bajo el cap\u00f3, el Cliente AI consta de dos niveles:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Cliente PHP AI<\/strong> (<code>wordpress\/php-ai-client<\/code>) - un SDK de PHP agn\u00f3stico para proveedores, incluido como biblioteca externa en Core. M\u00e9todos CamelCase, excepciones, t\u00e9cnicamente independiente de WordPress.<\/li>\n\n\n\n<li><strong>WordPress Wrapper<\/strong> \u2014 <code>WP_AI_Client_Prompt_Builder<\/code> desarrolla el SDK en las convenciones de WordPress: m\u00e9todos snake_case, <code>WP_Error<\/code> en lugar de excepciones, la integraci\u00f3n con el transporte HTTP de WordPress, la API de habilidades, la infraestructura de conectores y el sistema de ganchos.<\/li>\n<\/ol>\n\n\n\n<p>Se trata de una separaci\u00f3n elegante. En teor\u00eda, el SDK de PHP tambi\u00e9n puede utilizarse fuera de WordPress. La envoltura de WordPress lo hace idiom\u00e1tico. Y eso <code>GenerativeAiResult<\/code>-objeto puede serializarse y conectarse directamente a <code>rest_ensure_response()<\/code> Integraci\u00f3n inmediata de la API REST:<\/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\">Control granular: el filtro<\/h2>\n\n\n\n<p>Para la seguridad y el cumplimiento de la normativa existen <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        \/\/ Ejemplo: AI s\u00f3lo para administradores\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>Si se bloquea un aviso: no hay llamada a la API, <code>is_supported_*()<\/code> da <code>falso<\/code> atr\u00e1s, <code>generar_*()<\/code> suministros <code>WP_Error<\/code>. Limpio, predecible, sin condiciones de carrera.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"starken-und-schwachen\">Puntos fuertes y d\u00e9biles<\/h2>\n\n\n\n<p><strong>Lo cual es una buena soluci\u00f3n:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>La abstracci\u00f3n del proveedor. Los desarrolladores de plug-ins nunca tienen que lidiar con claves API, l\u00edmites de tarifa o peculiaridades de los proveedores.<\/li>\n\n\n\n<li>Detecci\u00f3n de funciones sin llamadas a la API. Nada de adivinar si algo funciona.<\/li>\n\n\n\n<li>Las convenciones de WordPress. <code>WP_Error<\/code>, ganchos, compatibilidad REST: parece nativo.<\/li>\n\n\n\n<li>Compatibilidad con el esquema JSON. Se admiten respuestas estructuradas de primera clase.<\/li>\n\n\n\n<li>Arquitectura de dos niveles. Separaci\u00f3n limpia entre el SDK y la integraci\u00f3n de WordPress.<\/li>\n<\/ul>\n\n\n\n<p><strong>Lo que observo cr\u00edticamente:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El propietario del sitio es responsable de la configuraci\u00f3n del conector. Los plugins no tienen ninguna influencia en esto, <strong>si<\/strong> se configura un proveedor. La detecci\u00f3n de funciones lo soluciona, pero la experiencia del usuario sigue siendo un reto.<\/li>\n\n\n\n<li>El panorama del modelismo se mueve con rapidez. Queda por ver lo bien que envejecer\u00e1 la lista de preferencias cuando aparezcan nuevos modelos cada tres meses.<\/li>\n\n\n\n<li>Todav\u00eda no est\u00e1n claras las implicaciones para el rendimiento. C\u00f3mo se comporta el sistema bajo carga cuando 10 plugins env\u00edan avisos al mismo tiempo?<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"was-das-fur-bestehende-plugins-bedeutet\">Qu\u00e9 significa esto para los plugins existentes<\/h2>\n\n\n\n<p>Todos los plugins que actualmente tienen sus propias integraciones de IA se enfrentan a una decisi\u00f3n: \u00bfMantener su propia conexi\u00f3n API o migrar al cliente de IA?<\/p>\n\n\n\n<p>Para <strong>Plugins SEO<\/strong> la respuesta es clara: los datos estructurados, el an\u00e1lisis de contenidos y la generaci\u00f3n de meta descripciones se ejecutan de forma mucho m\u00e1s limpia a trav\u00e9s del cliente AI. Para <strong>Plugins de formularios<\/strong> abre la validaci\u00f3n inteligente de campos y el autocompletado. Para <strong>Plugins de comercio electr\u00f3nico<\/strong> Las descripciones de productos generadas por IA se convierten de repente en algo trivial.<\/p>\n\n\n\n<p>Para un plugin como <a href=\"https:\/\/wordpress.org\/plugins\/citelayer\/\" target=\"_blank\" rel=\"noreferrer noopener\">citelayer\u00ae - AI Visibilidad para WordPress<\/a>, que trabaja en la interfaz entre WordPress y los sistemas de IA, el cliente de IA es una extensi\u00f3n natural. Citelayer hace que el contenido sea legible para la IA, mediante llms.txt, inyecci\u00f3n de esquemas, seguimiento de bots y protocolos como UCP y WebMCP. El cliente de IA podr\u00eda complementar estas capas de an\u00e1lisis con an\u00e1lisis m\u00e1s inteligentes y asistidos por IA. He explicado lo que esto significa para la visibilidad de la IA en t\u00e9rminos concretos. <a href=\"https:\/\/citelayer.ai\/blog\/wordpress-7-ai-client\" target=\"_blank\" rel=\"noopener\">con m\u00e1s detalle en el blog de Citelayer<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"fazit\">No es un artilugio, sino una infraestructura<\/h2>\n\n\n\n<p>El cliente AI de WordPress 7.0 no es un gadget. Es una infraestructura. Bien pensada, WordPress-idiom\u00e1tica y con una filosof\u00eda de dise\u00f1o clara: el desarrollador describe la intenci\u00f3n, el sistema se encarga de la ejecuci\u00f3n.<\/p>\n\n\n\n<p>Cualquiera que desarrolle plugins para WordPress hoy en d\u00eda deber\u00eda familiarizarse con esta API. No porque sea necesario, sino porque es la base sobre la que se construir\u00e1 la pr\u00f3xima generaci\u00f3n de plugins de WordPress.<\/p>\n\n\n\n<p>La documentaci\u00f3n completa de la API est\u00e1 disponible en <a href=\"https:\/\/make.wordpress.org\/core\/2026\/03\/24\/introducing-the-ai-client-in-wordpress-7-0\/\" target=\"_blank\" rel=\"noopener\">WordPress Hacer Blog<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>El cliente de IA de WordPress 7.0 en una inmersi\u00f3n profunda para desarrolladores: arquitectura de la API, ejemplos de c\u00f3digo, detecci\u00f3n de funciones y lo que esto significa para los plugins existentes. De un desarrollador de plugins que lleva en esto desde 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\/es\/wp-json\/wp\/v2\/posts\/3603","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/isla-stud.io\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/isla-stud.io\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/isla-stud.io\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/isla-stud.io\/es\/wp-json\/wp\/v2\/comments?post=3603"}],"version-history":[{"count":2,"href":"https:\/\/isla-stud.io\/es\/wp-json\/wp\/v2\/posts\/3603\/revisions"}],"predecessor-version":[{"id":3607,"href":"https:\/\/isla-stud.io\/es\/wp-json\/wp\/v2\/posts\/3603\/revisions\/3607"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/isla-stud.io\/es\/wp-json\/wp\/v2\/media\/3606"}],"wp:attachment":[{"href":"https:\/\/isla-stud.io\/es\/wp-json\/wp\/v2\/media?parent=3603"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/isla-stud.io\/es\/wp-json\/wp\/v2\/categories?post=3603"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/isla-stud.io\/es\/wp-json\/wp\/v2\/tags?post=3603"},{"taxonomy":"dipi_cpt_category","embeddable":true,"href":"https:\/\/isla-stud.io\/es\/wp-json\/wp\/v2\/dipi_cpt_category?post=3603"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}