Guide

File Upload Control

PHP Field Configuration Reference

File Upload

Use this config when fieldType is file_upload.

1) Base Parameters

ParameterRequiredTypeDefaultChoicesDescription
fieldTypeYesstringfile_uploadfile_uploadSets 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) File Upload Specific Parameters

ParameterRequiredTypeDefaultChoicesDescription
acceptNostringSpecifies which file types can be uploaded. Accepts file extensions (.jpg, .png, .pdf), MIME types (image/*, video/*, text/plain), or mixed (image/*,.pdf,.doc). Separate multiple values with commas.
maxFileSizeNointMaximum file size in kilobytes (KB). For example, set 2500 for 2500 KB (2.5 MB).
multipleNoboolfalsetrue, falseWhether to allow multiple file selection.

3) PHP Array Schema

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

[
    'fieldType' => 'file_upload',
    'name' => 'post_file_upload',
    'fieldLabel' => 'Post File Upload',
    'required' => false,
    'disabled' => false,
    'hideLabelFromVision' => false,
    'fieldHelpText' => 'Upload a file.',
    'className' => 'custom-class',
    'fieldLabelPosition' => 'top',
    'fieldLabelTextTransform' => 'uppercase',
    'accept' => 'image/*,.pdf',
    'maxFileSize' => 2500,
    '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' => 'file_upload',
            'name' => 'post_file_upload',
            'fieldLabel' => 'Post File Upload',
            'required' => false,
            'disabled' => false,
            'hideLabelFromVision' => false,
            'fieldHelpText' => 'Upload a file.',
            'className' => 'custom-class',
            'fieldLabelPosition' => 'top',
            'fieldLabelTextTransform' => 'uppercase',
            'accept' => 'image/*,.pdf',
            'maxFileSize' => 2500,
            'multiple' => false,
            ],
        ],
    ];

    return $configs;
} );

4) Stored Value Type

Field TypeMeta Value Type
file_uploadstring (serialized JSON, for example {"name":"file.pdf","url":"https://example.com/wp-content/uploads/file.pdf","type":"application/pdf","size":12345}) or JSON array if multiple is true

Was this helpful?