Blocs Gutenberg Rendus en PHP — Compatible avec acf_register_block_type | Field Forge - Champs personnalisés, conçus pour la vitesse
Télécharger Se connecter

Blocs Gutenberg Rendus en PHP — Compatible avec acf_register_block_type

Pourquoi des blocs rendus en PHP ?

Gutenberg (l’éditeur de blocs de WordPress) a été conçu autour de blocs rendus en JavaScript. Vous écrivez une fonction save() en JS qui retourne le HTML du bloc, et WordPress enregistre ce HTML dans le contenu de l’article. Pour des blocs visuels simples, cela fonctionne très bien.

Mais pour des blocs dynamiques — “Afficher les 3 derniers articles de blog avec un style personnalisé,” “Afficher un membre de l’équipe avec des données du profil de l’utilisateur actuel,” “Rendre une grille de produits à partir d’une requête WooCommerce” — les blocs JavaScript sont pénibles. Vous finissez par écrire des appels à l’API REST, gérer les états de chargement, et reconstruire la logique de récupération de données que WordPress sait déjà faire en PHP.

Les blocs rendus en PHP vous permettent d’écrire un rappel PHP qui s’exécute au moment du rendu de la page, a un accès complet aux API de données de WordPress (WP_Query, get_field(), get_post_meta(), etc.), et retourne le HTML directement. Plus simple, plus rapide, et plus conforme à l’idiome WordPress.

ACF a introduit acf_register_block_type() il y a des années et cela est devenu la norme de facto pour les développeurs d’agences construisant des blocs Gutenberg personnalisés. Field Forge prend en charge la même signature de fonction, donc la migration est triviale.


Comment enregistrer un bloc PHP

Exemple de base

“`php // functions.php ou un plugin personnalisé

add_action(‘acf/init’, ‘register_my_blocks’);

function register_my_blocks() { if (function_exists(‘acf_register_block_type’)) { acf_register_block_type([ ‘name’ => ‘feature-card’, ‘title’ => __(‘Carte de Fonctionnalité’), ‘description’ => __(‘Une carte de fonctionnalité avec icône, titre et description.’), ‘render_callback’ => ‘render_feature_card_block’, ‘category’ => ‘theme’, ‘icon’ => ‘star-filled’, ‘keywords’ => [‘feature’, ‘card’], ‘supports’ => [ ‘align’ => [‘wide’, ‘full’], ‘anchor’ => true, ‘color’ => true, ], ]); } }

function render_feature_card_block($block) { $icon = get_field(‘icon’); $title = get_field(‘title’); $description = get_field(‘description’); ?>

<?php } ```

Ce code est identique au code d’enregistrement d’ACF. Fonctionne sans changement après la migration.

Enregistrement natif de Field Forge

Si vous préférez l’API native de Field Forge (pour la propreté du code ou pour éviter d’impliquer qu’ACF est toujours nécessaire), utilisez fieldforge_register_block_type() :

php add_action('init', function() { fieldforge_register_block_type([ 'name' => 'feature-card', 'title' => __('Carte de Fonctionnalité'), 'render_callback' => 'render_feature_card_block', 'category' => 'theme', ]); });

Les deux fonctions font la même chose. Utilisez celle qui correspond aux conventions de votre équipe.


Champs personnalisés dans le bloc

Chaque bloc PHP peut avoir son propre groupe de champs assigné via des règles de localisation :

Règles de localisation : Le bloc est égal à "acf/feature-card"

Lorsque un éditeur ajoute le bloc à un article, Field Forge rend le groupe de champs dans la barre latérale du bloc (ou en ligne, selon les paramètres du bloc). L’éditeur remplit les champs, le bloc se met à jour automatiquement avec un aperçu en direct.

Au moment du rendu, la fonction render_callback utilise get_field() pour accéder aux valeurs des champs :

“`php function render_feature_card_block($block) { // get_field() fonctionne à l’intérieur des rappels de bloc $icon = get_field(‘icon’); $title = get_field(‘title’);

// Le tableau $block contient tout sur cette instance spécifique du bloc $block_id = $block[‘id’]; $is_preview = !empty($block[‘is_preview’]); $block_data = $block[‘data’]; $className = !empty($block[‘className’]) ? $block[‘className’] : ”;

// Rendre le HTML ?>

<div class="feature-card “>

<?php } ```


Supports de bloc

Les blocs PHP prennent en charge toutes les fonctionnalités standard des blocs Gutenberg :

Tout configuré via l’API de support de blocs standard de WordPress.


Mode aperçu

Lorsque un éditeur visualise le bloc dans l’éditeur (pas sur le frontend), le rappel s’exécute en “mode aperçu” :

php function render_my_block($block) { if ($block['is_preview']) { // Rendu dans l'éditeur echo '

'; render_actual_block($block); echo '

'; } else { render_actual_block($block); } }

Utilisez ceci pour ajouter des wrappers réservés à l’éditeur, du contenu de remplacement lorsque les champs sont vides, ou un style d’aperçu spécial.


Blocs internes

Les blocs PHP peuvent contenir d’autres blocs Gutenberg via InnerBlocks :

“`php acf_register_block_type([ ‘name’ => ‘two-column’, ‘render_callback’ => ‘render_two_column_block’, ‘supports’ => [ ‘inner_blocks’ => true, ], ]);

function render_two_column_block($block) { ?>

<?php } ```

Cela vous permet de construire des blocs de mise en page réutilisables que les utilisateurs peuvent remplir avec n’importe quel bloc Gutenberg de base (paragraphe, titre, image, etc.).


Modèle de bloc pour le contenu initial

Pré-remplir les blocs avec un contenu interne par défaut :

php acf_register_block_type([ 'name' => 'three-column', 'render_callback' => 'render_three_column_block', 'template' => [ ['core/columns', [], [ ['core/column', [], [['core/heading', ['content' => 'Colonne 1']]]], ['core/column', [], [['core/heading', ['content' => 'Colonne 2']]]], ['core/column', [], [['core/heading', ['content' => 'Colonne 3']]]], ]], ], ]);


Migration du code de bloc ACF

Chaque appel à acf_register_block_type() dans votre thème existant fonctionne sans changement lorsque Field Forge est actif (via la couche de compatibilité). Aucun changement de code nécessaire.

Le processus de migration :

  1. Installer Field Forge à côté d’ACF
  2. Exécuter l’importation du groupe de champs + valeurs
  3. Désactiver ACF
  4. La couche de compatibilité ACF de Field Forge prend le relais
  5. Vos appels à acf_register_block_type() continuent de fonctionner
  6. Les groupes de champs assignés aux blocs via des règles de localisation sont migrés

La plupart des sites avec des blocs PHP personnalisés terminent la migration sans toucher au code d’enregistrement des blocs.


Performance

Les blocs PHP se rendent sur le serveur, donc ils n’ajoutent pas de poids de bundle JavaScript. Combiné avec le stockage de table personnalisé de Field Forge, les recherches de valeurs de champs à l’intérieur des rappels de rendu sont rapides. Une page avec 20 blocs personnalisés fonctionne avec une fraction du nombre de requêtes qu’un ensemble similaire rendu en JavaScript nécessiterait.


Comparaison avec les blocs Gutenberg en JavaScript

Blocs rendus en PHP Blocs Gutenberg en JavaScript
Langue PHP JavaScript (React / JSX)
Outils de construction Aucun Webpack / Vite / wp-scripts
Accès aux données dynamiques Facile (get_field(), WP_Query) Nécessite des appels à l’API REST
Expérience développeur Familier pour les développeurs PHP Nécessite des compétences en JavaScript
Interactivité côté client Pas possible Cycle de vie complet des composants React
Rendu côté serveur Oui (par défaut) Blocs dynamiques uniquement
Meilleur pour Blocs de contenu, requêtes dynamiques, champs personnalisés Widgets interactifs, édition en direct

Les blocs PHP et les blocs JavaScript ne sont pas mutuellement exclusifs — utilisez les deux sur le même site pour des objectifs différents.


Prêt à construire des blocs Gutenberg avec des champs personnalisés ?

Obtenez Field Forge — à partir de 35 $/an →

Le support des blocs PHP est inclus dans chaque plan payant.

Assistant IA Forge En ligne

Bonjour ! Je suis l'assistant IA Field Forge. Posez-moi n'importe quelle question sur le plugin — configuration, fonctionnalités, dépannage ou développement.

À l'instant
Propulsé par Forge IA · Parcourir la documentation