# Trouver où un bloc ou un shortcode est utilisé sur tout le site

> Avant de désactiver une extension ou de retirer un bloc, ces requêtes et commandes WP-CLI permettent d'inventorier tous les contenus concernés.

- Auteur : Clément Hadrot
- Publié le : 2025-12-22
- Mis à jour le : 2025-12-22
- Catégorie : Tips
- URL : https://wpmoderne.dev.wordpress-developpement.fr/tips/trouver-ou-bloc-shortcode-utilise-site/

## L’essentiel

- Une requête SQL directe pour un inventaire rapide
- La commande WP-CLI équivalente sans écrire de SQL
- Vérifier aussi les modèles et patterns, pas seulement les articles

Avant de désactiver une extension qui fournissait un shortcode `[galerie_produits]` utilisé depuis six ans sur un site e-commerce, la question s'est posée : sur combien de pages ce shortcode apparaît-il encore ? Personne dans l'équipe ne pouvait répondre avec certitude. Désactiver l'extension sans le savoir revenait à parier sur l'apparition, ou non, de shortcodes non interprétés affichés en toutes lettres aux visiteurs.

Ce genre de question se règle rapidement avec une requête SQL ciblée ou son équivalent WP-CLI, plutôt qu'en parcourant manuellement des centaines de pages.

## Rechercher un shortcode par requête SQL directe

Le contenu d'un article étant stocké en texte brut dans `wp_posts.post_content`, une recherche par motif `LIKE` suffit à lister les contenus concernés :

```
SELECT ID, post_title, post_type, post_status
FROM wp_posts
WHERE post_content LIKE '%[galerie_produits%'
AND post_status IN ( 'publish', 'draft', 'pending' );
```

## La commande WP-CLI équivalente

Sans écrire de SQL à la main, WP-CLI propose une commande dédiée à la recherche de contenu, plus lisible et directement filtrable par type de contenu :

```
wp post list --post_type=any --s='[galerie_produits' --field=ID,post_title,post_status

# Pour un export complet en CSV, exploitable dans un tableur
wp post list --post_type=any --s='[galerie_produits' --format=csv > audit-shortcode.csv
```

> L'essentiel à retenir : Une requête SQL directe pour un inventaire rapide ; La commande WP-CLI équivalente sans écrire de SQL ; Vérifier aussi les modèles et patterns, pas seulement les articles

## Rechercher un bloc plutôt qu'un shortcode

Depuis l'éditeur de blocs, le contenu contient des commentaires HTML délimitant chaque bloc, sous la forme `<!-- wp:namespace/nom-du-bloc -->`. La recherche suit le même principe, en adaptant le motif recherché :

```
wp post list --post_type=any --s='<!-- wp:mon-extension/galerie-produits' --field=ID,post_title
```

Pour une recherche plus fiable qui ne dépend pas d'une correspondance textuelle approximative, un script WP-CLI personnalisé peut parser le contenu avec `parse_blocks()` et vérifier récursivement la présence du bloc, y compris dans les blocs imbriqués (colonnes, groupes) :

```
wp eval '
$articles = get_posts( [ "post_type" => "any", "posts_per_page" => -1, "post_status" => "any" ] );
foreach ( $articles as $article ) {
    $blocs = parse_blocks( $article->post_content );
    if ( bloc_present_recursif( $blocs, "mon-extension/galerie-produits" ) ) {
        echo $article->ID . " - " . $article->post_title . PHP_EOL;
    }
}
function bloc_present_recursif( $blocs, $nom ) {
    foreach ( $blocs as $bloc ) {
        if ( $bloc["blockName"] === $nom ) {
            return true;
        }
        if ( ! empty( $bloc["innerBlocks"] ) && bloc_present_recursif( $bloc["innerBlocks"], $nom ) ) {
            return true;
        }
    }
    return false;
}
'
```

## Ne pas oublier les gabarits et les widgets

Un shortcode ou un bloc peut aussi vivre dans des emplacements que la recherche par `wp_posts` classique ne couvre pas :

- Les modèles de l'éditeur de site (FSE), stockés dans le type de contenu `wp_template` et `wp_template_part`.
- Les widgets convertis en blocs, stockés dans le type de contenu `wp_navigation` pour les menus, ou en option `widget_block` pour les widgets classiques encore actifs.
- Le contenu de certains champs personnalisés, si le shortcode a été inséré via un champ ACF de type texte enrichi plutôt que dans le contenu principal.

```
wp post list --post_type=wp_template,wp_template_part --s='[galerie_produits' --field=ID,post_title
```

## Tableau récapitulatif des emplacements à vérifier

| Emplacement | Commande ou requête |
| --- | --- |
| Articles et pages | wp post list --post_type=any |
| Modèles de l'éditeur de site | wp post list --post_type=wp_template,wp_template_part |
| Widgets classiques en blocs | wp option get widget_block-2 (selon l'identifiant) |

> Une extension désactivée sans audit préalable ne casse jamais rien tout de suite : le problème apparaît une semaine plus tard, quand un client tombe sur un shortcode affiché en toutes lettres sur sa page d'accueil.

## En résumé

Un inventaire précis avant toute désactivation d'extension ou retrait de bloc prend rarement plus de dix minutes avec WP-CLI, contre plusieurs heures de correction dans l'urgence si le shortcode réapparaît en clair sur des pages encore actives. Ce réflexe d'audit devrait précéder systématiquement toute décision de retrait d'une fonctionnalité ancienne.
