Guide

Group Control

PHP Field Configuration Reference

Group

Use this config when fieldType is group.

A group is a container field that visually groups other fields together. It does not store its own meta value, but the fields it contains do.

1) Base Parameters

ParameterRequiredTypeDefaultChoicesDescription
fieldTypeYesstringgroupgroupSets control type.
nameYesstringSets control name. Use snake_case.
fieldLabelYesstringSets control label.
hideLabelFromVisionNoboolfalsetrue, falseSets control hide label from vision.
fieldHelpTextNostringSets control help text.
classNameNostringSets control css class name.
fieldLabelPositionNostringtoptop, leftSets control label position.
fieldLabelTextTransformNostringuppercaseuppercase, capitalize, lowercaseSets control label text transform.

2) Group Specific Parameters

ParameterRequiredTypeDefaultChoicesDescription
layoutNostringflexflex, gridSelect layout of the Group field.
columnsNoint3Column count for grid layout. Only used when layout is grid.
directionNostringcolumnRowrow, columnRow, columnFlex direction. columnRow is a responsive row that stacks on small screens. Only used when layout is flex.
justifyNostringspace-betweenflex-start, center, flex-end, space-between, space-around, space-evenlyJustify content alignment. Only used when layout is flex and direction is not column.

3) PHP Array Schema

Here is an example of how to use the group control in a post meta configuration:

[
    'fieldType' => 'group',
    'name' => 'post_group',
    'fieldLabel' => 'Post Group',
    'hideLabelFromVision' => false,
    'fieldHelpText' => 'Group of related fields.',
    'className' => 'custom-class',
    'fieldLabelPosition' => 'top',
    'fieldLabelTextTransform' => 'uppercase',
    'layout' => 'flex',
    'direction' => 'columnRow',
    'justify' => 'space-between',
    'fields' => [
        // child fields go here
    ],
]

3) Hook-Based Example (Post Meta Config)

It is available to use this control in post meta fields, term meta fields and user settings page and options page fields.

Available hooks:

  • native_custom_fields_post_meta_fields
  • native_custom_fields_term_meta_fields
  • native_custom_fields_user_meta_fields
  • native_custom_fields_options_page_fields
add_filter( 'native_custom_fields_post_meta_fields', function( array $configs ): array {
    $post_type = 'book';

    if ( ! isset( $configs[ $post_type ] ) || ! is_array( $configs[ $post_type ] ) ) {
        $configs[ $post_type ] = [
            'post_type' => $post_type,
            'sections'  => [],
        ];
    }

    $configs[ $post_type ]['sections'][] = [
        'meta_box_id'       => 'post_options',
        'meta_box_title'    => 'Post Options',
        'meta_box_context'  => 'normal',
        'meta_box_priority' => 'default',
        'fields'            => [
            [
            'fieldType' => 'group',
            'name' => 'post_group',
            'fieldLabel' => 'Post Group',
            'hideLabelFromVision' => false,
            'fieldHelpText' => 'Group of related fields.',
            'className' => 'custom-class',
            'fieldLabelPosition' => 'top',
            'fieldLabelTextTransform' => 'uppercase',
            'layout' => 'flex',
            'direction' => 'columnRow',
            'justify' => 'space-between',
            'fields' => [
                [
                    'fieldType' => 'text',
                    'name' => 'child_text_field',
                    'fieldLabel' => 'Child Text Field',
                ],
            ],
            ],
        ],
    ];

    return $configs;
} );

4) Stored Value Type

Field TypeMeta Value Type
groupN/A (container field — child fields store their own meta values individually)

Was this helpful?