Certains contenus n’ont aucun sens s’ils restent figés au moment de l’écriture : le nombre de commentaires d’un article, la date du jour, ou la liste des articles les plus récents changent en permanence. Pour ces cas, un bloc statique classique, qui grave son rendu dans le contenu sauvegardé, ne convient pas. Le bloc dynamique inverse la logique : sa fonction save ne renvoie rien (ou un simple espace réservé), et c’est une fonction PHP exécutée à chaque affichage qui produit le HTML final à partir des attributs stockés.
Fonctionnement dans WordPress
Côté PHP, le bloc s’enregistre avec register_block_type() en précisant un render_callback (ou, en PHP moderne, un fichier render.php référencé depuis block.json) qui reçoit les attributs du bloc et le contenu des éventuels blocs internes, et retourne le HTML à afficher. Le bloc Boucle de requête, le bloc Dernier article ou tout bloc affichant des données changeantes reposent sur ce mécanisme.
Exemple
// render.php
$compte = wp_count_comments( get_the_ID() );
echo '<p>' . esc_html( $compte->approved ) . ' commentaires</p>';
À ne pas confondre avec
- Le bloc statique, dont le HTML est déjà écrit dans la base de données et ne change plus une fois sauvegardé, même si les données source évoluent ensuite.
- L’API d’interactivité, qui gère l’interactivité après le rendu côté serveur, côté navigateur, alors que le rendu côté serveur détermine le HTML de départ envoyé au visiteur.
- Un bloc statique affichant un contenu qui semble variable en apparence (une image mise en avant par exemple) mais qui, en réalité, ne référence qu’un identifiant fixe stocké dans ses attributs.