Guide

Select Control

PHP Field Configuration Reference

Select

Use this config when fieldType is select.

1) Base Parameters

ParameterRequiredTypeDefaultChoicesDescription
fieldTypeYesstringselectselectSets control type.
nameYesstringSets control name. Use snake_case.
fieldLabelYesstringSets control label.
defaultNostringSets control default value.
requiredNoboolfalsetrue, falseSets control required.
disabledNoboolfalsetrue, falseSets control disabled.
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) Select Specific Parameters

ParameterRequiredTypeDefaultChoicesDescription
optionsNostringAn array of objects containing the value and label of the options. Format: "Option 1 : option_1, Option 2 : option_2". Supports dynamic keywords: {{users}}, {{posts}}, {{pages}}, {{taxonomies}}, {{categories}}, {{tags}}, {{menus}}, {{roles}}, {{post_types}} with optional REST API parameters (e.g. {{posts?author=admin&per_page=10}}).
variantNostringdefaultdefault, minimalThe style variant of the control.
multipleNoboolfalsetrue, falseIf true, multiple values can be selected. The stored value will be a JSON array.
prefixNostringRenders an element before the input. Accepts text (e.g. "$", "https://") or WordPress icon names (e.g. "search", "external", "lock").
suffixNostringRenders an element after the input. Accepts text (e.g. "USD", ".com") or WordPress icon names (e.g. "search", "external", "lock").

3) PHP Array Schema

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

[
    'fieldType' => 'select',
    'name' => 'post_select',
    'fieldLabel' => 'Post Select',
    'required' => false,
    'disabled' => false,
    'hideLabelFromVision' => false,
    'fieldHelpText' => 'Select an option.',
    'className' => 'custom-class',
    'fieldLabelPosition' => 'top',
    'fieldLabelTextTransform' => 'uppercase',
    'options' => [
        ['label' => 'Option 1', 'value' => 'option_1'],
        ['label' => 'Option 2', 'value' => 'option_2']
    ],
    // Or 'options' => 'Option 1 : option_1, Option 2 : option_2'
    'variant' => 'default',
    'multiple' => false,
]

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'  => 'side',
        'meta_box_priority' => 'default',
        'fields'            => [
            [
            'fieldType' => 'select',
            'name' => 'post_select',
            'fieldLabel' => 'Post Select',
            'required' => false,
            'disabled' => false,
            'hideLabelFromVision' => false,
            'fieldHelpText' => 'Select an option.',
            'className' => 'custom-class',
            'fieldLabelPosition' => 'top',
            'fieldLabelTextTransform' => 'uppercase',
            'options' => 'Option 1 : option_1, Option 2 : option_2',
            'variant' => 'default',
            'multiple' => false,
            ],
        ],
    ];

    return $configs;
} );

4) Stored Value Type

Field TypeMeta Value Type
selectstring (selected option value), or string (serialized JSON array) if multiple is true (for example '["option_1","option_2"]')

Was this helpful?