Douze blocs pertinents pour une page de contenu éditorial classique : titres, paragraphes, images, citations, listes. Trois blocs seulement pour une fiche produit dont la structure doit rester stable : un titre, une galerie d’images, un bloc de caractéristiques techniques maison. Proposer les douze mêmes blocs sur les deux types de contenu ne fait qu’encombrer l’inserteur et multiplier les risques d’erreur pour un rédacteur qui découvre un type de contenu qu’il maîtrise moins bien.
Ce tutoriel détaille comment utiliser le filtre allowed_block_types_all pour adapter précisément la liste des blocs disponibles selon le type de contenu ouvert dans l’éditeur, étape par étape.
Étape 1 : comprendre la signature du filtre
Le filtre reçoit deux arguments : la valeur actuellement autorisée (par défaut true, signifiant que tous les blocs enregistrés sont autorisés), et une instance de WP_Block_Editor_Context qui donne accès, entre autres, à l’article en cours d’édition via sa propriété post :
add_filter( 'allowed_block_types_all', function( $allowed_blocks, $context ) {
// $allowed_blocks vaut true par défaut
// $context->post donne accès à l'article en cours, si applicable
return $allowed_blocks;
}, 10, 2 );
Étape 2 : retourner un tableau de blocs pour un type de contenu précis

Pour restreindre l’inserteur uniquement sur le type de contenu fiche-produit, on teste la propriété post_type du post associé au contexte, puis on retourne un tableau explicite des noms de blocs autorisés :
add_filter( 'allowed_block_types_all', function( $allowed_blocks, $context ) {
if ( ! $context->post || 'fiche-produit' !== $context->post->post_type ) {
return $allowed_blocks;
}
return [
'core/heading',
'core/gallery',
'mon-extension/caracteristiques-techniques',
];
}, 10, 2 );
Sur tout autre type de contenu, la fonction retourne $allowed_blocks inchangé, ce qui laisse l’inserteur complet disponible ailleurs sur le site.
Étape 3 : vérifier le résultat dans l’éditeur
Une fois le filtre en place, ouvrir une fiche produit existante et cliquer sur l’inserteur de blocs (le bouton représentant un signe plus) doit afficher uniquement les trois blocs autorisés, tous les autres disparaissant de la recherche comme de la liste par catégorie. Ce comportement s’applique dès le chargement de l’éditeur, avant toute interaction du rédacteur : il ne s’agit pas d’un simple masquage visuel côté JavaScript, mais d’une restriction appliquée en amont, côté serveur.
Étape 4 : combiner avec un test sur les capacités de l’utilisateur
Le filtre se combine naturellement avec current_user_can() pour distinguer un profil administrateur, qui garde accès à tous les blocs y compris sur une fiche produit, d’un profil rédacteur plus contraint :
add_filter( 'allowed_block_types_all', function( $allowed_blocks, $context ) {
if ( current_user_can( 'manage_options' ) ) {
return $allowed_blocks; // pas de restriction pour les administrateurs
}
if ( $context->post && 'fiche-produit' === $context->post->post_type ) {
return [ 'core/heading', 'core/gallery', 'mon-extension/caracteristiques-techniques' ];
}
return $allowed_blocks;
}, 10, 2 );
Étape 5 : vérifier le comportement dans l’éditeur de site
Ce filtre s’applique aussi dans l’éditeur de site (FSE), où $context->post reste vide en l’absence d’article associé. Il est donc essentiel de tester ce cas explicitement, sous peine de restreindre par erreur l’inserteur lors de l’édition d’un gabarit, ce qui bloquerait des blocs pourtant nécessaires à la construction du thème.
if ( ! $context->post ) {
return $allowed_blocks; // ne rien restreindre dans l'éditeur de site
}
Points de vigilance
- Retourner un tableau vide bloque totalement l’insertion de tout bloc, y compris ceux déjà présents dans le contenu existant : à réserver aux cas où c’est réellement voulu.
- Ce filtre remplace l’ancien
allowed_block_types, déprécié depuis WordPress 5.8 au profit du contexte d’édition complet. - Un bloc déjà inséré dans le contenu avant l’application du filtre reste affiché normalement : la restriction ne s’applique qu’à l’inserteur, pas au contenu existant.
Sur nos sites à types de contenu multiples, ce filtre fait partie des premiers réglages posés, avant même la personnalisation visuelle des blocs : une liste de blocs adaptée réduit immédiatement les erreurs de saisie des rédacteurs.
En résumé
allowed_block_types_all transforme un inserteur générique en outil réellement adapté à chaque type de contenu, avec un contrôle fin par rôle si besoin. La clé reste de toujours tester le cas où $context->post est vide, pour ne pas casser accidentellement l’édition des gabarits du site.