Le WordPress d'aujourd'hui, décodé pour les développeurs

Blocs Gutenberg

Meta Box Blocks contre un bloc natif fait main, pour l’immobilier

Comparer temps de développement et souplesse entre l'extension Meta Box Blocks et un bloc écrit à la main, pour afficher des biens immobiliers.

Par WordPress Développement • 9 décembre 2022 • 4 min de lecture • Aucun commentaire
Meta Box Blocks contre un bloc natif fait main, pour l'immobilier

Faut-il vraiment écrire du JavaScript pour afficher une fiche de bien immobilier dans l’éditeur de blocs ? Sur un projet pour une agence immobilière indépendante qui avait besoin d’une dizaine de blocs différents (fiche bien, carte des annonces, formulaire d’estimation, avis clients), la question méritait d’être posée sérieusement avant de se lancer dans un développement entièrement fait main.

Ce billet compare l’extension Meta Box Blocks, qui génère des blocs à partir de champs personnalisés sans écrire de JavaScript, à un bloc natif développé entièrement à la main. ACF Blocks, solution voisine déjà comparée ailleurs dans ce blog, n’est pas repris ici.

Comment fonctionne Meta Box Blocks

Meta Box Blocks s’appuie sur le système de champs personnalisés de l’extension Meta Box, déjà répandue sur de nombreux projets pour gérer des champs avancés. Chaque groupe de champs peut être transformé en bloc Gutenberg, avec un gabarit d’affichage écrit en PHP classique, sans toucher à l’API JavaScript des blocs.

[
    'id'     => 'fiche-bien',
    'title'  => 'Fiche bien immobilier',
    'fields' => array(
        array( 'id' => 'prix', 'name' => 'Prix', 'type' => 'number' ),
        array( 'id' => 'surface', 'name' => 'Surface', 'type' => 'number' ),
    ),
    'render_callback' => 'afficher_fiche_bien',
]

Le même bloc, écrit à la main

La version fait main du même bloc exige une déclaration JavaScript complète, un composant d’édition, une déclaration d’attributs, et un rendu PHP séparé côté serveur, soit plusieurs fichiers à maintenir pour un seul bloc :

registerBlockType( 'agence/fiche-bien', {
    attributes: {
        prix: { type: 'number', default: 0 },
        surface: { type: 'number', default: 0 },
    },
    edit: Editer,
    save: () => null,
} );
L'essentiel à retenir : Meta Box Blocks génère un bloc à partir de champs sans écrire de JavaScript ; Un bloc fait main coûte plus cher à développer mais reste plus souple ; Le bon choix dépend du nombre de blocs à produire, pas de leur complexité seule

Le tableau comparatif

CritèreMeta Box BlocksBloc fait main
Temps pour un premier bloc simpleEnviron 2 heuresEnviron 2 jours
Connaissances JavaScript requisesAucuneIndispensables
Souplesse d’interaction dans l’éditeurLimitée aux champs proposésTotale
Dépendance à une extension tierceOui, permanenteAucune
Coût de maintenance à long termeFaible par blocPlus élevé mais mieux maîtrisé

Ce que Meta Box Blocks ne permet pas facilement

  • Une interaction complexe dans l’éditeur, comme un glisser-déposer de photos réordonnables
  • Un aperçu en direct qui diffère sensiblement du rendu final côté front
  • Une logique conditionnelle avancée entre plusieurs champs affichés dans l’éditeur

Le gabarit d’affichage, côté rendu

Le gabarit associé au bloc reste un simple fichier PHP, appelé par le render_callback déclaré plus haut, avec accès direct aux valeurs des champs via les fonctions de l’extension :

function afficher_fiche_bien( $attributs, $contenu, $bloc ) {
    $post_id = get_the_ID();
    $prix    = rwmb_meta( 'prix', array(), $post_id );
    $surface = rwmb_meta( 'surface', array(), $post_id );

    printf(
        '<article><p>%s €</p><p>%s m²</p></article>',
        esc_html( $prix ),
        esc_html( $surface )
    );
}

Cette approche reste lisible même pour un développeur qui découvre le projet, puisqu’elle ne mobilise aucune notion propre à l’API JavaScript des blocs : un simple appel de fonction PHP suffit à retrouver la valeur d’un champ, exactement comme sur un champ personnalisé classique affiché dans un gabarit de thème.

Le critère de décision qui a vraiment tranché

Pour l’agence immobilière, le nombre de blocs à produire (une dizaine) a fait pencher la balance vers Meta Box Blocks : le gain de temps cumulé sur dix blocs dépassait largement la souplesse perdue sur chacun d’entre eux, aucun des blocs demandés ne nécessitant d’interaction complexe dans l’éditeur. Un unique bloc très spécifique, avec une interaction poussée, aurait justifié l’inverse.

Le critère qui compte vraiment n’est pas la complexité d’un bloc pris isolément, mais le nombre de blocs à produire sur l’ensemble du projet : ce calcul change souvent la décision.

Notre verdict

Meta Box Blocks convient très bien à un projet qui doit produire plusieurs blocs d’affichage de champs sans interaction complexe, avec un gain de temps réel et mesurable. Un bloc fait main reste préférable dès qu’une interaction fine dans l’éditeur devient centrale au besoin, ou quand la dépendance à une extension tierce n’est pas souhaitée sur le long terme.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi