parse_blocks()
Définition : parse_blocks() est une fonction PHP WordPress qui analyse un contenu sérialisé en blocs et retourne une structure d’arbres. Elle expose les noms, attributs et sous-blocs présents dans un article.
Comprendre et utiliser
À quoi cela sert ?
Elle sert à étudier ou transformer un contenu structuré sans traiter tous les délimiteurs comme de simples chaînes de caractères. Les blocs internes restent accessibles dans une arborescence.
Comment cela fonctionne ?
La fonction reçoit une chaîne de contenu et renvoie des tableaux comprenant notamment blockName, attrs, innerBlocks, innerHTML et innerContent. Elle n’effectue pas le rendu final.
Dans quel contexte l’utiliser ?
À employer pour un audit de contenu, une analyse de migration ou la recherche d’un type de bloc précis dans une publication.
Cas concret : ATOOLPHA
ATOOLPHA peut compter les blocs de premier niveau d’un article de démonstration pour contrôler sa structure avant une refonte éditoriale.
Exemple de code commenté
Extrait documentaire : le contexte WordPress du plugin/éditeur et les dépendances décrites sont nécessaires ; ne pas coller dans le contenu d’une page.
<?php
$post = get_post( 123 ); // ID fictif à remplacer sur un site de test.
if ( $post instanceof WP_Post ) {
$blocks = parse_blocks( $post->post_content );
foreach ( $blocks as $block ) {
$name = $block['blockName'] ?? '(contenu libre)';
error_log( 'Bloc : ' . $name );
}
}
Décryptage de l’exemple
La fonction convertit le contenu en tableaux structurés. Cet exemple journalise les blocs de premier niveau uniquement ; une exploration complète des blocs enfants nécessite un parcours récursif.
Résultat attendu
Le journal peut aider à identifier les types employés par un article, sans changer ni publier de contenu.
Atelier pratique de vérification
Analyser un contenu comprenant un Groupe avec deux enfants et compter séparément blocs racines et descendants. Vérifier les champs blockName et innerBlocks. Refaire sur un contenu contenant du texte libre hors délimiteurs. Mesurer le temps de traitement sur un document suffisamment volumineux dans un environnement de test.
Précautions et limites
Le parsing complet peut être coûteux pour de gros documents ou des structures très imbriquées. Éviter de l’exécuter à chaque requête publique sans justification ni cache.
Contrôle avant intégration dans un plugin
Éviter le parsing répétitif de gros contenus en front-end. Mesurer son coût sur une page de test, traiter les blocs imbriqués et distinguer les fragments libres des blocs réellement identifiés.
À ne pas confondre
parse_blocks() construit une structure de données ; render_block() transforme une représentation de bloc en HTML.
Diagnostic et dépannage avancés
Si certains contenus n’ont pas de blockName, vérifier s’il s’agit de texte libre hors blocs plutôt que d’un problème de parsing.
Notions associées
- render_block()
- Bloc WordPress
- Block API
