Guide

Media Library Control

PHP Field Configuration Reference

Media Library

Use this config when fieldType is media_library.

1) Base Parameters

ParameterRequiredTypeDefaultChoicesDescription
fieldTypeYesstringmedia_librarymedia_librarySets control type.
nameYesstringSets control name. Use snake_case.
fieldLabelYesstringSets control label.
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) Media Library Specific Parameters

ParameterRequiredTypeDefaultChoicesDescription
allowedTypesNostringimage, video, audio, applicationJSON array of allowed media types. Leave empty to allow all types. Example: ["image","video"]
multipleNoboolfalsetrue, falseAllow selecting multiple files from the media library.

3) PHP Array Schema

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

[
    'fieldType' => 'media_library',
    'name' => 'post_media_library',
    'fieldLabel' => 'Post Media Library',
    'required' => false,
    'disabled' => false,
    'hideLabelFromVision' => false,
    'fieldHelpText' => 'Select a media file.',
    'className' => 'custom-class',
    'fieldLabelPosition' => 'top',
    'fieldLabelTextTransform' => 'uppercase',
    'allowedTypes' => '["image"]',
    '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' => 'media_library',
            'name' => 'post_media_library',
            'fieldLabel' => 'Post Media Library',
            'required' => false,
            'disabled' => false,
            'hideLabelFromVision' => false,
            'fieldHelpText' => 'Select a media file.',
            'className' => 'custom-class',
            'fieldLabelPosition' => 'top',
            'fieldLabelTextTransform' => 'uppercase',
            'allowedTypes' => '["image"]',
            'multiple' => false,
            ],
        ],
    ];

    return $configs;
} );

4) Stored Value Type

Field TypeMeta Value Type
media_librarystring (serialized JSON, for example {"id":123,"url":"https://example.com/wp-content/uploads/image.jpg","type":"image","alt":"Image alt text"}) or JSON array if multiple is true

Was this helpful?