Formation « Créer un site WordPress avec le Full Site Editing »

Déclarer un bloc uniquement en PHP et sans ACF

Lecture : 3 minutes • 0

Depuis WordPress 7.0, il n’est plus nécessaire d’avoir une version pro d’ACF pour déclarer des blocs en PHP. Il est désormais possible de le faire nativement grâce à quelques lignes de code.

Depuis le printemps 2026 et la sortie de WordPress 7.0, vous pouvez désormais déclarer vos blocs en PHP directement dans WordPress.

C’est une bonne nouvelle pour les développeurs PHP qui ne veulent pas apprendre React pour créer des blocs.

De plus, il n’est plus nécessaire d’avoir une licence ACF Pro non plus. Que de bonnes nouvelles ! Et vous allez voir, c’est super simple à déclarer.

Déclarer un bloc en PHP

Pour cela c’est très simple. Utilisez la fonction register_block_type() qui existe déjà depuis un moment et indiquez toutes les informations du bloc conformément à la documentation du block.json.

PHP
functions.php

La magie opère au niveau de l’attribut autoRegister de la sections supports. C’est ici la grosse nouveauté qui permet de déclarer le bloc sans JS.

Le render_callback vous permet de définir le HTML du bloc qui sera affiché dans l’éditeur comme en front.

Une fois le PHP écrit, rafraichissez votre éditeur et vous devriez voir apparaître le bloc dans le menu d’insertion de WordPress :

Le bloc PHP apparait bien dans le menu d'insertion de WordPress
Notre bloc est bien présent dans la liste !

Et c’est tout ! Plus besoin de JS, pas besoin de compilation. Si vous êtes allergiques à React, c’est la solution idéale.

Ajouter des attributs administrables

Maintenant, pour rendre notre bloc un peu plus intéressant, on va ajouter des attributs, c’est-à-dire des données administrables.

C’est là où WordPress va nous régaler car il va automatiquement déclarer les champs correspondants. On ne va pas avoir certes l’embarras du choix, mais c’est déjà pas mal :

PHP
functions.php

C’est dans la section attributes que l’on va déclarer nos options administrables. Pour chacune d’entre-elles on va devoir :

  • label : donner un libellé ;
  • type : définir le type : string, integer, boolean
  • default : définir une valeur par défaut, si besoin ;
  • enum : sera utile pour contraindre des choix.

Votre bloc aura désormais des options qui apparaissent automatiquement dans l’inspecteur, à droite de l’éditeur :

Notre bloc dans l'éditeur de WordPress, avec ses options.
Les attributs apparaissent automatiquement à droite

Pas mal non ? Le choix des champs est fait automatiquement en fonction du type de données que vous avez défini.

Type de donnéeChamp
TextText
IntegerNumber
BooleanCheckbox
Texte + enumSelect

Par contre, contrairement aux blocs ACF, ici on n’a pas le choix du type de champ à afficher. On ne peut pas définir un Toggle (on/off) pour le booléen, ce qui est dommage.

Maintenant, pour afficher ces données, il suffit de les récupérer via le paramètre $attributes fournit automatiquement dans render_callback().

PHP
functions.php

Et voilà, le tour est joué. Vous n’avez pas besoin de traiter ces données, WordPress le fait automatiquement pour vous.

Ajouter des personnalisations à notre bloc

Enfin, on va pouvoir ajouter des personnalisations d’apparence à notre bloc, sans effort supplémentaire, grâce à la propriété supports, à la suite de autoRegister.

PHP
functions.php

Ici, j’ai ajouté les options de couleur de fond et de texte, le choix de la marge interne mais aussi d’alignement du bloc (pleine largeur et grande largeur).

Pas besoin de plus ! Résultat :

Le bloc propose désormais des options de personnalisation d'apparence.
Les options d’apparence grâce aux supports

Pour connaître la liste complète des options supportées par WordPress, consultez la documentation des supports.

Conseil

Grâce aux supports, vous n’avez pas besoin d’ajouter vous-mêmes des options de personnalisation d’apparence du bloc.

Quelle différence avec les blocs JS ?

Pourquoi donc s’embêter à faire des blocs en JS si on peut les faire en PHP ? Est-ce qu’il y a une différence ?

Oui, et une de taille : les blocs PHP sont rendus grâce à un appel Ajax, et il y a toujours un petit délai de rafraichissement pour voir apparaitre les modifications, même si celui-ci est infime.

Ce n’est donc pas un aperçu en temps réel comme avec JS. De plus, il n’est pas possible de modifier les textes directement en cliquant dessus dans le bloc. Il faut impérativement passer par le champ dans l’inspecteur à droite.

Il y a donc deux questions à se poser avant de faire son choix :

  • Veut-on gagner du temps au détriment de l’UX : blocs PHP ;
  • On veut une UX aux petits oignons, quite à prendre un peu plus de temps en dev : blocs JS !

Et voilà, vous savez faire un bloc natif en PHP ! Cette solution est très adaptée pour gagner du temps en créant des blocs simples avec peu d’options.

0

Questions, réponses et commentaires

Laisser un commentaire