# Multi Media field

The Redux Multi Media extension is an improved way to allow your users to upload and/or select multiple files from the WordPress media library for use in the Redux Framework options panel.

# Arguments

Name Type Default Description
type string multi_media Value identifying the field type.
id string Unique ID identifying the field. Must be different from all other field IDs.
title string Displays title of the field.
subtitle string Subtitle display of the field, situated beneath the title.
desc string Description of the field, appearing beneath the field control.
class string Appends any number of classes to the field's class attribute.
labels array Array of key/pair values defining the text in labels used throughout the field. See 'Setting Labels' below.
library_filter array Array of comma separated string extensions (minus the dot prefix) which the media uploader/selector will allow/display. Omit this argument to use no filter and allow all file types.
max_file_upload int Integer value limiting the number of files to be uploaded or selected.  Set to 0 for unlimited.
hint array Array containing the content and optional title arguments for the hint tooltip.

# Setting Labels

The labels argument gives the opportunity to set the caption for the following interfaces.  This is useful not only for localization purposes, but for flexibility reasons as well.

Name Type Default Description
upload_file string Select File(s) Text that appears on the field's upload button.
remove_image string Remove Image Alt text appearing over an image thumbnail's delete icon.
remove_file string Remove Text appearing after a non-image file's listing
file string File: Text appearing before a non-image file's listing.
download string Download Text appearing after a non-image file's listing
title string Field title argument Text appearing in WordPress's media uploader/selector window.
button string Add or Upload File(s) Text appearing in WordPress's media uploader/selector button.
duplicate string %s already exists in your file queue. Message that appears when a duplicate file has been selected.  %s represents the duplicate file to be displayed and should not be modified.
max_limit string Maximum upload limit of %s reached/exceeded. Message that appears when max_file_limit has been reached.  %s represents the max_file_upload number and should not be modified.

# Example Config

Redux::set_section(
	$opt_name,
	array(
		'title'      => esc_html__( 'Multi Media', 'your-textdomain-here' ),
		'desc'       => esc_html__( 'For full documentation on this field, visit: ', 'your-textdomain-here' ) . '<a href="https://devs.redux.io/core-extensions/multi-media.html" target="_blank">https://devs.redux.io/core-extensions/multi-media.html</a>',
		'subsection' => true,
		'fields'     => array(
			array(
				'id'              => 'opt-multi-media',
				'type'            => 'multi_media',
				'title'           => esc_html__( 'Multi Media Selector', 'your-textdomain-here' ),
				'subtitle'        => esc_html__( 'Alternative media field which allows for multi selections', 'your-textdomain-here' ),
				'desc'            => esc_html__( 'max_file_limit has been set to 5.', 'your-textdomain-here' ),
				'max_file_upload' => 5,
			),
		),
	)
);

# Example Usage

The extension's return value is an array of key/pair values. The key contains the file's post-ID, while the value contains the URL of the file itself. It will be necessary to use a for/each loop to extract the values (Please remember to replace redux_demo with your own opt_name argument).

# Using the API

$data = Redux::get_option( 'OPT_NAME', 'opt-multi-media' );

foreach ( $data as $id => $url ) {
    echo 'Post ID: ' . $id;
    echo 'URL: '     . $url;
}

# Using the Global variable

global $redux_demo;

foreach ( $redux_demo['opt-multi-media'] as $id => $url ) {
    echo 'Post ID: ' . $id;
    echo 'URL: '     . $url;
}

# The get_extended_data Helper Function

The Multi Media extension includes a helper function to extract a wide variety of data for any post ID passed to it. To take advantage of this function, use the following code (to get a post ID, use the code above in conjunction with the code below):

// the $id variable assumes a valid post ID.
$ext_data = ReduxFramework_extension_multi_media::get_extended_data( $id )

The return value will contain an array of the follow data in key/pair format:

id
title
filename
url
link
alt
author
description
caption
name
status
uploadedTo
date
modified
menuOrder
mime
type
subtype
icon
dateFormatted
nonces
editLink
sizes
width
height
fileLength
compat