media_upload_library_form( array $errors )

In this article

Outputs the legacy media upload form for the media library.

Parameters

$errorsarrayrequired

Source

function media_upload_library_form( $errors ) {	global $wpdb, $wp_query, $wp_locale, $type, $tab, $post_mime_types;	media_upload_header();	$post_id = isset( $_REQUEST['post_id'] ) ? (int) $_REQUEST['post_id'] : 0;	$form_action_url = admin_url( "media-upload.php?type=$type&tab=library&post_id=$post_id" );	/** This filter is documented in wp-admin/includes/media.php */	$form_action_url = apply_filters( 'media_upload_form_url', $form_action_url, $type );	$form_class = 'media-upload-form validate';	if ( get_user_setting( 'uploader' ) ) {	$form_class .= ' html-uploader';	}	$q = $_GET;	$q['posts_per_page'] = 10;	$q['paged'] = isset( $q['paged'] ) ? (int) $q['paged'] : 0;	if ( $q['paged'] < 1 ) {	$q['paged'] = 1;	}	$q['offset'] = ( $q['paged'] - 1 ) * 10;	if ( $q['offset'] < 1 ) {	$q['offset'] = 0;	}	list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query( $q );	?>	<form id="filter" method="get">	<input type="hidden" name="type" value="<?php echo esc_attr( $type ); ?>" />	<input type="hidden" name="tab" value="<?php echo esc_attr( $tab ); ?>" />	<input type="hidden" name="post_id" value="<?php echo (int) $post_id; ?>" />	<input type="hidden" name="post_mime_type" value="<?php echo isset( $_GET['post_mime_type'] ) ? esc_attr( $_GET['post_mime_type'] ) : ''; ?>" />	<input type="hidden" name="context" value="<?php echo isset( $_GET['context'] ) ? esc_attr( $_GET['context'] ) : ''; ?>" />	<p id="media-search" class="search-box">	<label class="screen-reader-text" for="media-search-input">	<?php	/* translators: Hidden accessibility text. */	_e( 'Search Media:' );	?>	</label>	<input type="search" id="media-search-input" name="s" value="<?php the_search_query(); ?>" />	<?php submit_button( __( 'Search Media' ), '', '', false ); ?>	</p>	<ul class="subsubsub">	<?php	$type_links = array();	$_num_posts = (array) wp_count_attachments();	$matches = wp_match_mime_types( array_keys( $post_mime_types ), array_keys( $_num_posts ) );	foreach ( $matches as $_type => $reals ) {	foreach ( $reals as $real ) {	if ( isset( $num_posts[ $_type ] ) ) {	$num_posts[ $_type ] += $_num_posts[ $real ];	} else {	$num_posts[ $_type ] = $_num_posts[ $real ];	}	}	}	// If available type specified by media button clicked, filter by that type.	if ( empty( $_GET['post_mime_type'] ) && ! empty( $num_posts[ $type ] ) ) {	$_GET['post_mime_type'] = $type;	list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query();	}	if ( empty( $_GET['post_mime_type'] ) || 'all' === $_GET['post_mime_type'] ) {	$class = ' class="current"';	} else {	$class = '';	}	$type_links[] = '<li><a href="' . esc_url(	add_query_arg(	array(	'post_mime_type' => 'all',	'paged' => false,	'm' => false,	)	)	) . '"' . $class . '>' . __( 'All Types' ) . '</a>';	foreach ( $post_mime_types as $mime_type => $label ) {	$class = '';	if ( ! wp_match_mime_types( $mime_type, $avail_post_mime_types ) ) {	continue;	}	if ( isset( $_GET['post_mime_type'] ) && wp_match_mime_types( $mime_type, $_GET['post_mime_type'] ) ) {	$class = ' class="current"';	}	$type_links[] = '<li><a href="' . esc_url(	add_query_arg(	array(	'post_mime_type' => $mime_type,	'paged' => false,	)	)	) . '"' . $class . '>' . sprintf( translate_nooped_plural( $label[2], $num_posts[ $mime_type ] ), '<span id="' . $mime_type . '-counter">' . number_format_i18n( $num_posts[ $mime_type ] ) . '</span>' ) . '</a>';	}	/** * Filters the media upload mime type list items. * * Returned values should begin with an `<li>` tag. * * @since 3.1.0 * * @param string[] $type_links An array of list items containing mime type link HTML. */	echo implode( ' | </li>', apply_filters( 'media_upload_mime_type_links', $type_links ) ) . '</li>';	unset( $type_links );	?>	</ul>	<div class="tablenav">	<?php	$page_links = paginate_links(	array(	'base' => add_query_arg( 'paged', '%#%' ),	'format' => '',	'prev_text' => __( '&laquo;' ),	'next_text' => __( '&raquo;' ),	'total' => (int) ceil( $wp_query->found_posts / 10 ),	'current' => $q['paged'],	)	);	if ( $page_links ) {	echo "<div class='tablenav-pages'>$page_links</div>";	}	?>	<div class="alignleft actions">	<?php	$months = $wpdb->get_results(	"SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month	FROM $wpdb->posts	WHERE post_type = 'attachment'	ORDER BY post_date DESC"	);	$month_count = count( $months );	$selected_month = isset( $_GET['m'] ) ? (int) $_GET['m'] : 0;	if ( $month_count && ( 1 !== $month_count || 0 !== (int) $months[0]->month ) ) {	?>	<select name='m'>	<option<?php selected( $selected_month, 0 ); ?> value='0'><?php _e( 'All dates' ); ?></option>	<?php	foreach ( $months as $arc_row ) {	if ( 0 === (int) $arc_row->year ) {	continue;	}	$month = zeroise( $arc_row->month, 2 );	$year = $arc_row->year;	printf(	"<option %s value='%s'>%s</option>\n",	selected( $selected_month, $year . $month, false ),	esc_attr( $year . $month ),	/* translators: 1: Month name, 2: 4-digit year. */	esc_html( sprintf( __( '%1$s %2$d' ), $wp_locale->get_month( $month ), $year ) )	);	}	?>	</select>	<?php } ?>	<?php submit_button( __( 'Filter &#187;' ), '', 'post-query-submit', false ); ?>	</div>	<br class="clear" />	</div>	</form>	<form enctype="multipart/form-data" method="post" action="<?php echo esc_url( $form_action_url ); ?>" class="<?php echo $form_class; ?>" id="library-form">	<?php wp_nonce_field( 'media-form' ); ?>	<script type="text/javascript">	jQuery(function($){	var preloaded = $(".media-item.preloaded");	if ( preloaded.length > 0 ) {	preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');});	updateMediaForm();	}	});	</script>	<div id="media-items">	<?php add_filter( 'attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2 ); ?>	<?php echo get_media_items( null, $errors ); ?>	</div>	<p class="ml-submit">	<?php submit_button( __( 'Save all changes' ), 'savebutton', 'save', false ); ?>	<input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />	</p>	</form>	<?php } 

Hooks

apply_filters( ‘media_upload_form_url’, string $form_action_url, string $type )

Filters the media upload form action URL.

apply_filters( ‘media_upload_mime_type_links’, string[] $type_links )

Filters the media upload mime type list items.

Changelog

VersionDescription
2.5.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.