PHP AI Client 1.5.1 : WordPress 7.2 encadre les fichiers envoyés à l'IA
Actualités

PHP AI Client 1.5.1 : WordPress 7.2 encadre les fichiers envoyés à l'IA

WordPress 7.2 embarque PHP AI Client 1.5.1 : un chemin local ne sera plus lu en silence. Notre test sur 7.1.3 et ce que les plugins IA doivent vérifier.

Le 29 octobre 2026, WordPress a intégré dans sa future version 7.2 la bibliothèque PHP AI Client 1.5.1, qui change la façon dont un plugin joint un fichier à une requête d’IA. Dans notre bac à sable en WordPress 7.1.3, une simple chaîne contenant un chemin du serveur suffit encore pour que le fichier soit lu et préparé pour l’envoi au fournisseur d’IA, y compris quand la chaîne arrive par un tableau de données. Si vous développez ou utilisez un plugin qui envoie des images ou des documents à une IA, vérifiez cette semaine d’où viennent ces chaînes.

Ce qui a été annoncé

La version 1.5.1 de PHP AI Client, la bibliothèque qui sert de client IA au cœur de WordPress depuis la 7.0, a été publiée le 28 octobre 2026. Elle contient deux changements qui touchent les développeurs.

Le premier vient de la demande de fusion n° 308. Jusqu’ici, la classe File devinait la nature d’une chaîne en essayant dans l’ordre : adresse web, URI data:, chemin d’un fichier local existant, puis données base64. La 1.5.1 ajoute quatre constructeurs explicites, File::fromUrl(), File::fromDataUri(), File::fromBase64() et File::fromLocalPath(), et seul le dernier lit le disque. Le constructeur classique accepte encore un chemin local, mais ce cas est désormais déprécié : il émet un avis E_USER_DEPRECATED, rendu silencieux. Tout schéma d’adresse autre que http:// ou https:// est refusé avant tout accès au disque. Enfin, File::fromArray() n’accepte plus un chemin local à la place de données base64. Les auteurs précisent que la suppression complète du chemin local est réservée à une future version cassante.

Le second vient de la demande n° 301 : un crochet prepareFunctionParametersForRequest() permet à un fournisseur d’adapter le schéma des outils, et les annotations d’outil ne partent plus dans les requêtes des API compatibles OpenAI, qui pouvaient les rejeter.

Le lendemain, le commit 856bae7a71 du dépôt de développement de WordPress a intégré cette version au tronc, donc à WordPress 7.2, dont la sortie est prévue le 8 décembre 2026 selon l’annonce de la bêta 2. Son message précise un point important : les constructeurs de requêtes et de messages acceptent toujours un chemin local, sans avis de dépréciation. Le 31 octobre, la branche 7.1 du même dépôt contenait toujours la version 1.3.1.

Ce que ça change pour un site WordPress

Notre analyse : pour le propriétaire d’un site, rien ne change aujourd’hui. La version stable reste la 7.1.4, avec la bibliothèque 1.3.1. Le sujet concerne les plugins qui utilisent le client IA du cœur, par exemple pour générer le texte alternatif d’une image, décrire une fiche produit WooCommerce à partir de sa photo ou résumer un PDF.

Le risque visé est simple à formuler. Si une chaîne qui ne vient pas du développeur (un champ de formulaire, une valeur reçue d’une API, un historique de conversation stocké en base) arrive dans with_file() ou dans File::fromArray(), la bibliothèque 1.3.1 peut la traiter comme un chemin, lire le fichier correspondant sur le serveur et l’inclure dans la requête envoyée au fournisseur d’IA. La 1.5.1 ferme ce chemin pour les données désérialisées et pour les schémas d’adresse exotiques, mais pas pour la forme chaîne de with_file() : la nouvelle classe FileInputUtil dit en toutes lettres que cette forme ne doit recevoir que des chaînes maîtrisées par le développeur.

Autrement dit, WordPress 7.2 réduit la surface, sans dispenser les plugins de contrôler leurs entrées. Et un plugin qui vise aussi WordPress 7.0 et 7.1 ne peut pas compter sur File::fromLocalPath(), qui n’existe pas avant la 1.5.1.

Notre test

Le 31 octobre 2026, nous avons exécuté six essais sur la bibliothèque embarquée par WordPress 7.1.3 dans notre bac à sable wp-veille (PHP 8.3.30), avec un fichier texte inoffensif que nous avons créé : « Fiche produit de test Genisoft : bougie parfumee, 12 EUR. ». Aucun fournisseur d’IA n’a été appelé : nous construisons les objets et nous regardons ce qu’ils contiennent.

Essai (bibliothèque 1.3.1)Ce que nous avons observé
new File($chemin, 'text/plain')fichier lu, type inline, contenu de la fiche en base64
File::fromArray() avec le chemin dans base64Datafichier lu, même contenu
new File('file:///' . $chemin)fichier lu, même contenu
new File('https://…/bougie.jpg')type remote, MIME image/jpeg, rien n’est lu
File::fromLocalPath()méthode absente
MessageBuilder::withFile($chemin)fichier lu, aucun avis émis

Nous avons ensuite appelé la fonction du cœur, avec wp eval-file :

wp_ai_client_prompt( 'Résume cette fiche produit.' )->with_file( $chemin, 'text/plain' );

Le message préparé contient une partie file de type inline dont base64Data correspond au contenu de notre fiche : le chemin a bien été lu par la couche WordPress, qui transmet à PromptBuilder de la bibliothèque.

Pour la 1.5.1, nous avons lu le code du commit 856bae7a71 : fromArray() passe par assertArrayShape(), qui renvoie l’erreur « Inline files require valid base64 data in base64Data. Local file paths are not supported. » ; le constructeur rejette les schémas autres que http(s) avec « Unsupported URL scheme » ; withFile() passe par FileInputUtil::fromString(), qui lit toujours un chemin local existant.

Limites : nous n’avons pas exécuté nos essais sur la 1.5.1, seulement lu son code ; le comportement annoncé pour WordPress 7.2 sera à confirmer sur la bêta suivante. Nous n’avons pas recensé les plugins du répertoire qui appellent with_file().

Que faire cette semaine

  1. Développeur de plugin : cherchez les appels concernés dans votre code, par exemple grep -rnE "with_file|withFile|new File\(|File::fromArray" wp-content/plugins/votre-plugin/. Pour chacun, notez d’où vient la chaîne.
  2. Pour un fichier de la médiathèque : partez d’un identifiant de pièce jointe, résolvez vous-même le chemin avec get_attached_file(), puis passez une URI data: que vous construisez. Cette forme est reconnue avant la détection d’un chemin local en 1.3.1 comme en 1.5.1, donc elle fonctionne de WordPress 7.0 à 7.2.
  3. Si vous stockez des conversations (tableau toArray() en base, puis fromArray()) : sur 7.0 et 7.1, vérifiez que base64Data est bien du base64 avant de reconstruire le message.
  4. Propriétaire de site : dans Tableau de bord > Mises à jour, vérifiez que vous êtes en 7.1.4 ; pour chaque plugin d’IA installé (Extensions > Extensions installées), demandez à son éditeur s’il passe des fichiers fournis par les visiteurs au client IA.
  5. Avant le 8 décembre : testez vos plugins IA sur une copie du site en 7.2 bêta. L’avis de dépréciation est silencieux : il faut un gestionnaire d’erreurs qui le capte pour le voir.

La version stable de WordPress publiée au 31 octobre 2026 est la 7.1.4.

Pour un développeur de plugins

Les fichiers à lire sont src/wp-includes/php-ai-client/src/Files/DTO/File.php et le nouveau Files/Util/FileInputUtil.php dans le commit 856bae7a71. Si vous construisez des objets File vous-même, préférez dès WordPress 7.2 les fabriques explicites. Si votre plugin déclare des outils pour un modèle compatible OpenAI, le nouveau crochet prepareFunctionParametersForRequest() est le point d’entrée pour adapter leur schéma.

Limites et incertitudes

La branche 7.1 contenait encore la 1.3.1 le 31 octobre ; un rétroportage dans une version 7.1.x reste possible, sans annonce à ce jour. La suppression du chemin local dans le constructeur n’a pas de date. Le calendrier de WordPress 7.2 peut encore bouger d’ici décembre.

Questions fréquentes

Mon site WordPress est-il exposé si je n’utilise aucun plugin d’IA ? Non. Le client IA du cœur ne lit un fichier que si un plugin ou un thème l’appelle avec with_file() ou construit un objet File. Sans appel, il ne se passe rien.

Faut-il attendre WordPress 7.2 pour être protégé ? Non. Le contrôle des entrées reste la responsabilité du plugin, et WordPress 7.2 laisse toujours with_file() lire un chemin local. Un plugin qui n’accepte que des chemins qu’il a lui-même résolus n’a pas besoin d’attendre la 7.2.

Mon code qui passe un chemin à new File() va-t-il casser en 7.2 ? D’après le code de la 1.5.1, non : le fichier est toujours lu et un avis de dépréciation silencieux est émis. La suppression viendra dans une version cassante non datée.

Comment cet article a été produit. Faits vérifiés dans les sources primaires listées plus bas ; six essais sur la bibliothèque PHP AI Client 1.3.1 embarquée par WordPress 7.1.3, plus un appel à with_file() par WP-CLI, réalisés le 31 octobre 2026 dans notre bac à sable WordPress, et lecture du code 1.5.1 du commit 856bae7a71 (sorties conservées). Rédigé avec l’aide de Claude (Anthropic), puis relu et validé par l’équipe Genisoft avant publication.

Sources


Pour aller plus loin :

Agence web PrestaShop & WordPress

Agence web spécialisée PrestaShop et WordPress : création, maintenance, sécurité, performance et référencement. Nos tutoriels sont issus de nos interventions sur de vraies boutiques.

L'agence Genisoft → LinkedIn →