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

Headless & API

Meta Box ou Carbon Fields pour exposer des champs personnalisés en headless

Comparatif de deux alternatives à ACF pour préparer des champs personnalisés consommables en headless, avec un verdict pensé pour un projet sans budget d'extension premium.

Par WordPress Développement • 23 mai 2023 • 4 min de lecture • Aucun commentaire
Meta Box ou Carbon Fields pour exposer des champs personnalisés en headless

Combien coûte un champ personnalisé sur un projet dont le budget d’extensions premium est littéralement nul ? C’est la contrainte posée par une association de médiation numérique itinérante, qui avait besoin d’un catalogue d’ateliers consultable par une petite application mobile de réservation, sans un centime à consacrer à une licence de plugin. ACF Pro, avec son extension REST intégrée, était donc exclu d’office malgré sa popularité.

Deux alternatives gratuites et sérieuses restaient en lice : Carbon Fields, une bibliothèque entièrement déclarée en code, et Meta Box, dont le cœur est gratuit mais dont certaines fonctionnalités avancées passent par des extensions payantes. Les deux ont été testées sur le même besoin réel : un type de contenu atelier avec une date, un lieu, un niveau de difficulté et une liste de matériel requis.

Carbon Fields : tout en PHP, rien dans l’interface

Carbon Fields ne propose aucune interface de configuration visuelle : chaque groupe de champs se déclare en code, généralement dans le fichier principal du thème ou d’un plugin dédié. Ce choix déplaît à certains, mais il présente un avantage net pour un projet headless : la déclaration des champs peut vivre au même endroit que la déclaration de l’exposition REST, dans un seul fichier versionné.

use Carbon_Fields\Container;
use Carbon_Fields\Field;

add_action( 'carbon_fields_register_fields', function () {
    Container::make( 'post_meta', 'Détails de l\'atelier' )
        ->where( 'post_type', '=', 'atelier' )
        ->add_fields( array(
            Field::make( 'date', 'date_atelier', 'Date' ),
            Field::make( 'text', 'lieu_atelier', 'Lieu' ),
            Field::make( 'select', 'niveau', 'Niveau' )
                ->set_options( array(
                    'debutant'     => 'Débutant',
                    'intermediaire' => 'Intermédiaire',
                ) ),
        ) );
} );

L’exposition REST des champs Carbon Fields n’est pas automatique : il faut la déclarer explicitement via register_rest_field(), ce qui demande un peu plus de code au départ mais laisse un contrôle total sur ce qui sort dans la réponse JSON.

Meta Box : une interface visuelle, une extension REST à part

Meta Box permet de construire les mêmes groupes de champs via une interface graphique, ou via son propre système de déclaration en tableau PHP, plus proche dans l’esprit de la syntaxe d’ACF. Pour exposer ces champs dans l’API REST, il faut installer en plus l’extension gratuite MB REST API, distincte du cœur du plugin.

L'essentiel à retenir : Carbon Fields se déclare entièrement en PHP, sans interface d'administration à configurer ; Meta Box propose un générateur visuel gratuit avec une extension REST séparée ; Le budget zéro a fait pencher la balance vers une des deux solutions
add_filter( 'rwmb_meta_boxes', function ( $meta_boxes ) {
    $meta_boxes[] = array(
        'title'      => 'Détails de l\'atelier',
        'post_types' => array( 'atelier' ),
        'fields'     => array(
            array( 'id' => 'date_atelier', 'type' => 'date', 'name' => 'Date' ),
            array( 'id' => 'lieu_atelier', 'type' => 'text', 'name' => 'Lieu' ),
        ),
        'rest' => array( 'field_name' => 'atelier_details' ),
    );
    return $meta_boxes;
} );

Une fois l’extension REST activée, l’exposition est bien plus rapide à mettre en place que sur Carbon Fields : le paramètre rest dans la déclaration du champ suffit. C’est un gain de temps réel pour un projet où l’équipe médiation numérique devait pouvoir ajouter elle-même de nouveaux champs sans redemander à un développeur à chaque fois.

Le tableau comparatif

CritèreCarbon FieldsMeta Box (+ MB REST API)
Interface d’administrationAucune, tout en codeGénérateur visuel disponible
Exposition RESTManuelle, via register_rest_fieldDéclarative, via le paramètre rest
Autonomie de l’équipe non techniqueFaibleBonne
Dépendance à une extension tierceAucuneUne extension supplémentaire à jour

Ce comparatif ne traite pas d’ACF

ACF, dans sa version gratuite, ne propose pas nativement l’exposition REST des champs personnalisés sans code additionnel, et sa version Pro était exclue par la contrainte budgétaire posée dès le départ. La comparaison volontaire s’est donc limitée à deux alternatives entièrement gratuites, sans revenir sur les mérites d’ACF lui-même, largement documentés ailleurs.

Le plugin gratuit le plus adapté n’est pas celui qui a le plus de fonctionnalités, c’est celui dont les limites correspondent le mieux à qui va réellement l’utiliser une fois le développeur reparti.

Le choix retenu

Meta Box avec son extension REST gratuite a finalement été retenu, malgré une exposition API légèrement moins contrôlée que celle de Carbon Fields. L’argument décisif a été l’autonomie rendue à l’équipe de médiation numérique, qui gère désormais seule l’ajout de nouveaux champs pour ses ateliers sans dépendre d’un développeur à chaque évolution.

Le point de vigilance

Un choix technique gratuit reste un choix technique : la dépendance à une extension REST séparée impose de vérifier sa compatibilité à chaque montée de version de WordPress, un travail de veille qu’il ne faut pas sous-estimer sur un projet associatif dont les ressources de maintenance resteront limitées dans la durée.

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