Un client gérant un site immobilier importe entre 30 et 50 photos par bien mis en vente, sans jamais renseigner le texte alternatif requis pour l’accessibilité. Plutôt que de former son équipe à une tâche perçue comme fastidieuse, nous avons construit une extension qui propose automatiquement une légende et un texte alternatif dès l’import, à valider en un clic.
Le principe reste volontairement simple : aucune publication directe du texte généré, un humain valide ou corrige systématiquement avant que le champ ne soit réellement enregistré sur l’image.
Étape 1 : intercepter l’import dans la médiathèque
Le hook add_attachment se déclenche dès qu’un fichier est ajouté à la médiathèque, qu’il s’agisse d’un import direct ou d’un ajout via l’éditeur de contenu. On y récupère le chemin du fichier pour le transmettre à l’API de vision.
add_action( 'add_attachment', function ( $attachment_id ) {
if ( ! wp_attachment_is_image( $attachment_id ) ) {
return;
}
$file_url = wp_get_attachment_url( $attachment_id );
// planifier l'appel API en tâche asynchrone
wp_schedule_single_event( time(), 'generer_legende_ia', array( $attachment_id, $file_url ) );
} );
L’appel est délibérément planifié en tâche asynchrone plutôt qu’exécuté en direct : l’import d’une image ne doit jamais attendre la réponse d’une API externe, sous peine de ralentir l’expérience de l’utilisateur qui vient d’ajouter son fichier.
Étape 2 : appeler l’API de vision
La tâche planifiée envoie l’URL de l’image à l’API GPT-4 avec capacités de vision, avec un prompt demandant deux sorties distinctes, une légende descriptive courte et un texte alternatif factuel, sans interprétation ni ton commercial.
add_action( 'generer_legende_ia', function ( $attachment_id, $file_url ) {
$response = wp_remote_post( 'https://api.openai.com/v1/chat/completions', array(
'headers' => array(
'Authorization' => 'Bearer ' . get_option( 'mon_plugin_openai_key' ),
'Content-Type' => 'application/json',
),
'body' => wp_json_encode( array(
'model' => 'gpt-4-vision-preview',
'messages' => array( array(
'role' => 'user',
'content' => array(
array( 'type' => 'text', 'text' => 'Décris factuellement cette photo de bien immobilier en une légende courte et un texte alternatif accessible.' ),
array( 'type' => 'image_url', 'image_url' => array( 'url' => $file_url ) ),
),
) ),
) ),
'timeout' => 30,
) );
// stocker la proposition en attente de validation, pas encore dans les champs finaux
update_post_meta( $attachment_id, '_legende_ia_proposee', wp_remote_retrieve_body( $response ) );
}, 10, 2 );

Étape 3 : la validation manuelle dans l’écran médiathèque
Plutôt que d’écrire directement dans les champs légende et texte alternatif de l’image, l’extension stocke la proposition dans une méta séparée et affiche, sur l’écran de détail de l’image, un encart distinctif avec la suggestion et deux boutons, valider ou modifier. Ce n’est qu’au clic sur « valider » que le texte est réellement copié dans wp_update_post() pour la légende et dans le champ _wp_attachment_image_alt pour le texte alternatif.
- Aucune image ne se retrouve avec un texte alternatif généré sans validation
- L’équipe garde la main sur la terminologie propre au secteur immobilier
- Les propositions non validées restent visibles pour traitement ultérieur
Ce que la validation manuelle a corrigé
Sur les 200 premières images traitées, l’équipe a modifié la proposition de l’IA dans 18 % des cas, principalement pour préciser un type de bien (« maison de ville » plutôt que « maison »), corriger une orientation de pièce mal identifiée, ou retirer une mention de prix que le modèle avait cru lire sur une affiche visible dans la photo.
Une légende générée par IA est un brouillon utile, jamais un texte publiable sans un regard qui connaît le métier.
En résumé
Automatiser la proposition de légendes et de textes alternatifs fait gagner un temps réel sur un travail répétitif et souvent négligé, à condition de ne jamais court-circuiter la validation humaine. L’architecture en trois étapes, import asynchrone, appel API de vision, validation explicite avant écriture définitive, garantit qu’aucun texte halluciné ne se retrouve publié sans contrôle sur un site professionnel.