Skip to content

Les champs personnalisés

Le T32B est livré avec une librairie de gestion de champs ACF : ACF Composer.

ACF Composer est une approche permettant de définir les champs personnalisés ACF directement en PHP, à l’aide de classes dédiées, plutôt que via l’interface graphique de WordPress.
Il s’intègre parfaitement avec Acorn et Laravel, et favorise une configuration versionnée, lisible et maintenable.

Cette méthode permet de considérer les champs ACF comme du code, au même titre que le reste de l’application.

Pourquoi utiliser ACF Composer ?

L’utilisation d’ACF Composer permet de :

  • Versionner les champs personnalisés avec le code
  • Éviter les configurations manuelles en base de données
  • Centraliser la définition des champs
  • Faciliter la maintenance et l’évolution des structures
  • Reproduire facilement les environnements (local, staging, production)

👉 Les champs deviennent prévisibles, traçables et reproductibles.

Principe de fonctionnement

Avec ACF Composer :

  • Chaque groupe de champs est défini dans une classe PHP
  • Les champs sont déclarés via une API fluide
  • Les règles d’affichage (location) sont définies dans le code
  • Les champs sont automatiquement enregistrés au chargement de l’application

Ligne de commande

La création d’un nouveau groupe de champs ACF se fait via la ligne de commande :

bash
wp acorn acf:fields PageHeader

Exemple

php
<?php

namespace App\Configurations\Fields;

use App\Fields\Partials\PageHeaderPartial;
use Log1x\AcfComposer\Builder;
use Log1x\AcfComposer\Field;

class PageField extends Field
{
    /**
     * Methode qui permet d'ajouter vos champs
     */
    public function fields(): array
    {
        $fields = Builder::make('t32b_page_field', [
            'title' => __('Configuration de la page', DOMAIN),
        ]);

        $fields->setLocation('post_type', '==', 'page')
            ->and('page_template', '!=', 'template-mission.blade.php')
            ->and('page_type', '!=', 'front_page');

        $fields->addPartial(PageHeaderPartial::class);

        $fields->addRadio('radio_button_example', [
            'label' => __('Exemple de bouton radio', DOMAIN),
            'choices' => [
                'example-1' => __('Exemple 1', DOMAIN),
                'example-2' => __('Exemple 2', DOMAIN),
            ],
            'default_value' => 'example-2',
        ]);

        return $fields->build();
    }
}

Bonnes pratiques

  • 1 classe = 1 type de contenu : PostField, PageField, EventField...
  • Créer un Partial si vous avez besoin de champs sur plusieurs classe Fields
  • Noms explicites et stables
  • Les clés des champs en snake_case : radio_button_example