vendredi 25 septembre 2026

À propos

Contact

Tips

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.

Par Clément Hadrot • 22 décembre 2025 • 4 min de lecture • Aucun commentaire
Trouver où un bloc ou un shortcode est utilisé sur tout le site

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

EmplacementCommande ou requête
Articles et pageswp post list –post_type=any
Modèles de l’éditeur de sitewp post list –post_type=wp_template,wp_template_part
Widgets classiques en blocswp 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.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi