# Corriger en masse des attributs alt manquants sans extension

> Un snippet qui complète côté serveur les attributs alt manquants d'un lot d'images issues d'un import, sur un catalogue d'antiquités.

- Auteur : WordPress Développement
- Publié le : 2025-01-06
- Mis à jour le : 2025-01-06
- Catégorie : SEO &amp; GEO
- URL : https://www.wpmoderne.fr/seo/corriger-attributs-alt-manquants-sans-extension/

## L’essentiel

- Un import massif d'images sans attribut alt renseigné
- Un filtre côté serveur pour compléter à la volée
- Une génération de texte alternatif basée sur les métadonnées existantes

Plus de 2 700 images sans attribut `alt` renseigné : c'est le chiffre remonté par un script d'audit exécuté après l'import d'un catalogue d'antiquités depuis un ancien système de gestion documentaire vers WordPress. L'import, réalisé via un script de migration personnalisé, avait correctement transféré les fichiers image et leurs légendes, mais sans jamais renseigner le champ `alt` de la médiathèque, absent du format source d'origine.

Ce billet ne traite pas la génération de texte alternatif par un modèle d'intelligence artificielle, une approche distincte qui pose ses propres questions de fiabilité. Il présente une solution basée uniquement sur les métadonnées déjà présentes dans WordPress, sans dépendance à un service externe.

## Le problème : des métadonnées disponibles mais mal exploitées

Chaque image importée disposait d'un titre de pièce, d'une légende décrivant brièvement l'objet, et parfois d'une description plus longue, tous correctement renseignés lors de l'import. Seul l'attribut `alt`, stocké séparément comme métadonnée `_wp_attachment_image_alt`, restait vide, puisque le format source ne prévoyait pas de champ équivalent explicite.

Plutôt que de reprendre manuellement plus de 2 700 fiches une par une, un traitement automatisé s'imposait, capable de dériver un texte alternatif raisonnable à partir de la légende ou du titre déjà présents.

## Le snippet : compléter à partir des métadonnées existantes

> L'essentiel à retenir : Un import massif d'images sans attribut alt renseigné ; Un filtre côté serveur pour compléter à la volée ; Une génération de texte alternatif basée sur les métadonnées existantes

```
function antiq_completer_alt_manquants() {
    $images = get_posts( array(
        'post_type'      => 'attachment',
        'post_mime_type' => 'image',
        'posts_per_page' => -1,
        'meta_query'     => array(
            array(
                'key'     => '_wp_attachment_image_alt',
                'compare' => 'NOT EXISTS',
            ),
        ),
    ) );

    $corriges = 0;
    foreach ( $images as $image ) {
        $legende = $image->post_excerpt;
        $titre   = $image->post_title;
        $texte_alt = $legende ? $legende : $titre;

        if ( $texte_alt ) {
            update_post_meta( $image->ID, '_wp_attachment_image_alt', sanitize_text_field( $texte_alt ) );
            $corriges++;
        }
    }

    return $corriges;
}
```

La requête `meta_query` avec `'compare' => 'NOT EXISTS'` cible précisément les images dont la métadonnée `alt` n'existe pas du tout en base, différent d'une valeur simplement vide, une distinction importante puisque les deux cas ne se comportent pas de la même façon dans certaines requêtes SQL générées par WordPress.

## Ordre de priorité entre les sources de texte

Le script privilégie la légende (`post_excerpt`) sur le titre (`post_title`) lorsque les deux existent, car la légende, dans ce catalogue d'antiquités, contenait généralement une description plus riche de la pièce (matériau, époque, provenance) que le titre, souvent limité à une simple référence d'inventaire peu parlante pour un lecteur ou un moteur de recherche.

- Légende présente et descriptive : utilisée en priorité comme texte alternatif.
- Légende absente mais titre descriptif : titre utilisé en repli.
- Ni légende ni titre exploitable : image laissée de côté pour une vérification manuelle ultérieure, plutôt que de générer un texte alternatif vide de sens.

## Exécuter le traitement en toute sécurité sur un gros volume

Sur plus de 2 700 images, exécuter ce traitement en une seule requête HTTP risquait de dépasser le temps d'exécution maximal autorisé par le serveur. Le script a donc été exécuté via WP-CLI, dans un contexte sans cette limite de temps habituelle :

```
wp eval 'antiq_completer_alt_manquants();'
```

Cette approche en ligne de commande a permis de traiter l'ensemble du lot en une seule exécution, avec un journal simple affichant le nombre d'images effectivement corrigées à la fin du traitement.

## Vérification après traitement

Une fois le script exécuté, un nouvel audit a permis de vérifier la baisse du nombre d'images sans attribut `alt`, et un échantillon aléatoire de fiches corrigées a été relu manuellement pour s'assurer que le texte dérivé de la légende ou du titre restait pertinent et ne produisait pas de texte alternatif absurde ou tronqué.

## En résumé

Compléter en masse des attributs `alt` manquants ne nécessite pas systématiquement une extension dédiée ni un service externe : lorsque des métadonnées descriptives existent déjà, comme une légende ou un titre bien renseigné, un script ciblé exploitant `meta_query` et exécuté via WP-CLI permet de traiter plusieurs milliers d'images en une seule opération, avec un contrôle total sur la logique de choix du texte final.
