File Upload

Improve this page

Overview

The file upload field displayes an inline upload area that you can drag and drop files into. You can also select files from the Media Library.

This field is very similar to file advanced. The only different is the file advanced shows a + Add Media button instead of the inline upload area.

Screenshot

file upload

Settings

Besides the common settings, this field has the following specific settings:

Name Description
max_file_uploads Max number of uploaded files. Optional.
force_delete Whether or not delete the files from Media Library when deleting them from post meta. true or false (default). Optional. Note: it might affect other posts if you use same file for multiple posts.
mime_type MIME type of files which we want to show in Media Library. Note: this is a filter for items in Media popup, it doesn’t restrict file types when upload.
max_status Display how many files uploaded/remaining. Applied only when max_file_uploads is defined. true (default) or false. Optional.
max_file_size Maximum file size that the user can upload, in bytes. Optionally supports b, kb, mb, gb, tb suffixes. e.g. “10mb” or “1gb”.

Note that the multiple setting is always set to true for this field.

Sample code

array(
    'id'               => 'file',
    'name'             => 'File upload',
    'type'             => 'file_upload',

    // Delete file from Media Library when remove it from post meta?
    // Note: it might affect other posts if you use same file for multiple posts
    'force_delete'     => false,

    // Maximum file uploads.
    'max_file_uploads' => 2,

    // File types.
    // 'mime_type'        => 'application,audio,video',

    // Do not show how many files uploaded/remaining.
    'max_status'       => 'false',
),

Data

Similar to file field, this field saves multiple values (attachment IDs) in the database. Each value (attachment ID) and is store in a single row in the database with the same meta key (similar to what add_post_meta does with last parameter false).

Template usage

To get the uploaded files, use the helper function rwmb_meta():

$files = rwmb_meta( 'field_id' );
foreach ( $files as $file ) {
    ?>
    <a href="<?php echo $file['url']; ?>"><?php echo $file['name']; ?></a>
    <?php
}

This helper function returns an array of files, each file has the following information:

array(
    'ID'    => 123,
    'name'  => 'intro.txt',
    'path'  => '/var/www/wp-content/uploads/intro.txt',
    'url'   => 'https://example.com/wp-content/uploads/intro.txt',
    'title' => 'Introduction',
);

In case you want to get only 1 file, use the limit parameter for the helper function:

$files = rwmb_meta( 'field_id', array( 'limit' => 1 ) );
$file = reset( $files );
?>
<a href="<?php echo $file['url']; ?>">Download File</a>

If you only want to display uploaded files in an unordered list, you can just use the rwmb_the_value():

rwmb_the_value( $field_id );

which outputs:

<ul>
    <li><a href="link/to/file/">File 1</li>
    <li><a href="link/to/file/">File 2</li>
</ul>

Read more about rwmb_meta() and rwmb_the_value().

Filters

This field has some filters to change the texts displayed on the screen..

Filter Default Description
rwmb_media_add_string + Add Media Add new file string
rwmb_media_single_files_string file Singular “file” string
rwmb_media_multiple_files_string files Plural “files” string
rwmb_media_remove_string Remove File remove string
rwmb_media_edit_string Edit File edit string
rwmb_media_view_string View File view string
rwmb_media_select_string Select Files Select files string
rwmb_media_or_string or The string “or” in “Drop files here to upload or Select Files”
rwmb_media_upload_instructions_string Drop files here to upload The upload instruction string

The code below changes the “+ Add Media” string:

add_filter( 'rwmb_media_add_string', 'prefix_change_add_string' );
function prefix_change_add_string() {
    return '+ New File';
}