19. Enregistrement de Groupes de Champs avec PHP | Field Forge - Champs personnalisés, conçus pour la vitesse
Télécharger Se connecter

19. Enregistrement de Groupes de Champs avec PHP

Créez des groupes de champs de manière programmatique plutôt que via l’interface admin. Cela est utile pour les plugins qui livrent leurs propres groupes de champs, ou pour les équipes qui préfèrent une configuration basée sur le code.

Enregistrement de Base

php
add_action( 'init', function() {
    if ( ! class_exists( 'FIELDFORGE_Field_Groups' ) ) {
        return;
    }

    FIELDFORGE_Field_Groups::instance()->create( [
        'title'  => 'Product Fields',
        'fields' => [
            [
                'key'      => 'field_prod_price',
                'label'    => 'Price',
                'name'     => 'price',
                'type'     => 'number',
                'required' => true,
                'min'      => '0',
                'step'     => '0.01',
            ],
            [
                'key'   => 'field_prod_sku',
                'label' => 'SKU',
                'name'  => 'sku',
                'type'  => 'text',
            ],
            [
                'key'           => 'field_prod_gallery',
                'label'         => 'Gallery',
                'name'          => 'product_gallery',
                'type'          => 'gallery',
                'return_format' => 'array',
            ],
        ],
        'location_rules' => [
            [ [ 'param' => 'post_type', 'operator' => '==', 'value' => 'product' ] ],
        ],
    ] );
} );

Enregistrement Idempotent

Prévenir les groupes en double à chaque chargement de page :

php
add_action( 'init', function() {
    $groups = FIELDFORGE_Field_Groups::instance()->get_all();
    $existing = array_map( function( $g ) { return $g->title; }, $groups );

    if ( ! in_array( 'Product Fields', $existing, true ) ) {
        FIELDFORGE_Field_Groups::instance()->create( [
            'title'  => 'Product Fields',
            'fields' => [ /* ... */ ],
            'location_rules' => [ /* ... */ ],
        ] );
    }
} );

Enregistrement avec Répéteurs et Contenu Flexible

php
FIELDFORGE_Field_Groups::instance()->create( [
    'title'  => 'Page Builder',
    'fields' => [
        [
            'key'          => 'field_pb',
            'label'        => 'Sections',
            'name'         => 'page_sections',
            'type'         => 'flexible_content',
            'button_label' => 'Add Section',
            'layouts'      => [
                [
                    'key'        => 'layout_hero',
                    'name'       => 'hero',
                    'label'      => 'Hero',
                    'sub_fields' => [
                        [ 'key' => 'field_h1', 'label' => 'Heading', 'name' => 'heading', 'type' => 'text', 'required' => true ],
                        [ 'key' => 'field_h2', 'label' => 'Image', 'name' => 'image', 'type' => 'image', 'return_format' => 'array' ],
                    ],
                ],
                [
                    'key'        => 'layout_text',
                    'name'       => 'text_block',
                    'label'      => 'Text Block',
                    'sub_fields' => [
                        [ 'key' => 'field_t1', 'label' => 'Content', 'name' => 'content', 'type' => 'wysiwyg' ],
                    ],
                ],
            ],
        ],
    ],
    'location_rules' => [
        [
            [ 'param' => 'post_type', 'operator' => '==', 'value' => 'page' ],
            [ 'param' => 'post_template', 'operator' => '==', 'value' => 'page-builder.php' ],
        ],
    ],
] );

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