media_upload_library_form( array $errors )

Outputs the legacy media upload form for the media library.


Description Description


Parameters Parameters

$errors

(array) (Required)


Top ↑

Source Source

File: wp-admin/includes/media.php

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'] ) ? intval( $_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'] ) ? intval( $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 _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'] ) || $_GET['post_mime_type'] == 'all' ) {
		$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'     => 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

	$arc_query = "SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM $wpdb->posts WHERE post_type = 'attachment' ORDER BY post_date DESC";

	$arc_result = $wpdb->get_results( $arc_query );

	$month_count    = count( $arc_result );
	$selected_month = isset( $_GET['m'] ) ? $_GET['m'] : 0;

	if ( $month_count && ! ( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) {
		?>
<select name='m'>
<option<?php selected( $selected_month, 0 ); ?> value='0'><?php _e( 'All dates' ); ?></option>
		<?php
		foreach ( $arc_result as $arc_row ) {
			if ( $arc_row->yyear == 0 ) {
				continue;
			}
			$arc_row->mmonth = zeroise( $arc_row->mmonth, 2 );

			if ( $arc_row->yyear . $arc_row->mmonth == $selected_month ) {
				$default = ' selected="selected"';
			} else {
				$default = '';
			}

			echo "<option$default value='" . esc_attr( $arc_row->yyear . $arc_row->mmonth ) . "'>";
			echo esc_html( $wp_locale->get_month( $arc_row->mmonth ) . " $arc_row->yyear" );
			echo "</option>\n";
		}
		?>
</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' ); ?>
	<?php //media_upload_form( $errors ); ?>

<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
}

Top ↑

Changelog Changelog

Changelog
Version Description
2.5.0 Introduced.


Top ↑

User Contributed Notes User Contributed Notes

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