Title: media_upload_gallery_form
Published: April 25, 2014
Last modified: August 20, 2026

---

# media_upload_gallery_form( array $errors )

## In this article

 * [Parameters](https://developer.wordpress.org/reference/functions/media_upload_gallery_form/?output_format=md#parameters)
 * [Source](https://developer.wordpress.org/reference/functions/media_upload_gallery_form/?output_format=md#source)
 * [Hooks](https://developer.wordpress.org/reference/functions/media_upload_gallery_form/?output_format=md#hooks)
 * [Related](https://developer.wordpress.org/reference/functions/media_upload_gallery_form/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/media_upload_gallery_form/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/functions/media_upload_gallery_form/?output_format=md#wp--skip-link--target)

Adds gallery form to upload iframe.

## 󠀁[Parameters](https://developer.wordpress.org/reference/functions/media_upload_gallery_form/?output_format=md#parameters)󠁿

 `$errors`arrayrequired

## 󠀁[Source](https://developer.wordpress.org/reference/functions/media_upload_gallery_form/?output_format=md#source)󠁿

    ```php
    function media_upload_gallery_form( $errors ) {
    	global $redir_tab, $type;

    	$redir_tab = 'gallery';
    	media_upload_header();

    	$post_id         = (int) $_REQUEST['post_id'];
    	$form_action_url = admin_url( "media-upload.php?type=$type&tab=gallery&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';
    	}

    	?>
    	<script>
    	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="sort-buttons" class="hide-if-no-js">
    	<span>
    		<?php _e( 'All Tabs:' ); ?>
    	<a href="#" id="showall"><?php _e( 'Show' ); ?></a>
    	<a href="#" id="hideall" style="display:none;"><?php _e( 'Hide' ); ?></a>
    	</span>
    		<?php _e( 'Sort Order:' ); ?>
    	<a href="#" id="asc"><?php _e( 'Ascending' ); ?></a> |
    	<a href="#" id="desc"><?php _e( 'Descending' ); ?></a> |
    	<a href="#" id="clear"><?php _ex( 'Clear', 'verb' ); ?></a>
    	</div>
    	<form enctype="multipart/form-data" method="post" action="<?php echo esc_url( $form_action_url ); ?>" class="<?php echo $form_class; ?>" id="gallery-form">
    		<?php wp_nonce_field( 'media-form' ); ?>
    	<table class="widefat">
    	<thead><tr>
    	<th><?php _e( 'Media' ); ?></th>
    	<th class="order-head"><?php _e( 'Order' ); ?></th>
    	<th class="actions-head"><?php _e( 'Actions' ); ?></th>
    	</tr></thead>
    	</table>
    	<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( $post_id, $errors ); ?>
    	</div>

    	<p class="ml-submit">
    		<?php
    		submit_button(
    			__( 'Save all changes' ),
    			'savebutton',
    			'save',
    			false,
    			array(
    				'id'    => 'save-all',
    				'style' => 'display: none;',
    			)
    		);
    		?>
    	<input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" />
    	<input type="hidden" name="type" value="<?php echo esc_attr( $GLOBALS['type'] ); ?>" />
    	<input type="hidden" name="tab" value="<?php echo esc_attr( $GLOBALS['tab'] ); ?>" />
    	</p>

    	<div id="gallery-settings" style="display:none;">
    	<div class="title"><?php _e( 'Gallery Settings' ); ?></div>
    	<table id="basic" class="describe"><tbody>
    		<tr>
    		<th scope="row" class="label">
    			<label>
    			<span class="alignleft"><?php _e( 'Link thumbnails to:' ); ?></span>
    			</label>
    		</th>
    		<td class="field">
    			<input type="radio" name="linkto" id="linkto-file" value="file" />
    			<label for="linkto-file" class="radio"><?php _e( 'Image File' ); ?></label>

    			<input type="radio" checked="checked" name="linkto" id="linkto-post" value="post" />
    			<label for="linkto-post" class="radio"><?php _e( 'Attachment Page' ); ?></label>
    		</td>
    		</tr>

    		<tr>
    		<th scope="row" class="label">
    			<label>
    			<span class="alignleft"><?php _e( 'Order images by:' ); ?></span>
    			</label>
    		</th>
    		<td class="field">
    			<select id="orderby" name="orderby">
    				<option value="menu_order" selected="selected"><?php _e( 'Menu order' ); ?></option>
    				<option value="title"><?php _e( 'Title' ); ?></option>
    				<option value="post_date"><?php _e( 'Date/Time' ); ?></option>
    				<option value="rand"><?php _e( 'Random' ); ?></option>
    			</select>
    		</td>
    		</tr>

    		<tr>
    		<th scope="row" class="label">
    			<label>
    			<span class="alignleft"><?php _e( 'Order:' ); ?></span>
    			</label>
    		</th>
    		<td class="field">
    			<input type="radio" checked="checked" name="order" id="order-asc" value="asc" />
    			<label for="order-asc" class="radio"><?php _e( 'Ascending' ); ?></label>

    			<input type="radio" name="order" id="order-desc" value="desc" />
    			<label for="order-desc" class="radio"><?php _e( 'Descending' ); ?></label>
    		</td>
    		</tr>

    		<tr>
    		<th scope="row" class="label">
    			<label>
    			<span class="alignleft"><?php _e( 'Gallery columns:' ); ?></span>
    			</label>
    		</th>
    		<td class="field">
    			<select id="columns" name="columns">
    				<option value="1">1</option>
    				<option value="2">2</option>
    				<option value="3" selected="selected">3</option>
    				<option value="4">4</option>
    				<option value="5">5</option>
    				<option value="6">6</option>
    				<option value="7">7</option>
    				<option value="8">8</option>
    				<option value="9">9</option>
    			</select>
    		</td>
    		</tr>
    	</tbody></table>

    	<p class="ml-submit">
    	<input type="button" class="button" style="display:none;" onMouseDown="wpgallery.update();" name="insert-gallery" id="insert-gallery" value="<?php esc_attr_e( 'Insert gallery' ); ?>" />
    	<input type="button" class="button" style="display:none;" onMouseDown="wpgallery.update();" name="update-gallery" id="update-gallery" value="<?php esc_attr_e( 'Update gallery settings' ); ?>" />
    	</p>
    	</div>
    	</form>
    	<?php
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-admin/includes/media.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.1/src/wp-admin/includes/media.php#L2574)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.1/src/wp-admin/includes/media.php#L2574-L2721)

## 󠀁[Hooks](https://developer.wordpress.org/reference/functions/media_upload_gallery_form/?output_format=md#hooks)󠁿

 [apply_filters( ‘media_upload_form_url’, string $form_action_url, string $type )](https://developer.wordpress.org/reference/hooks/media_upload_form_url/)

Filters the media upload form action URL.

## 󠀁[Related](https://developer.wordpress.org/reference/functions/media_upload_gallery_form/?output_format=md#related)󠁿

| Uses | Description | 
| [submit_button()](https://developer.wordpress.org/reference/functions/submit_button/)`wp-admin/includes/template.php` |

Echoes a submit button, with provided text and appropriate class(es).

  | 
| [media_upload_header()](https://developer.wordpress.org/reference/functions/media_upload_header/)`wp-admin/includes/media.php` |

Outputs the legacy media upload header.

  | 
| [get_media_items()](https://developer.wordpress.org/reference/functions/get_media_items/)`wp-admin/includes/media.php` |

Retrieves HTML for media items of post gallery.

  | 
| [_ex()](https://developer.wordpress.org/reference/functions/_ex/)`wp-includes/l10n.php` |

Displays translated string with gettext context.

  | 
| [esc_attr_e()](https://developer.wordpress.org/reference/functions/esc_attr_e/)`wp-includes/l10n.php` |

Displays translated text that has been escaped for safe use in an attribute.

  | 
| [wp_nonce_field()](https://developer.wordpress.org/reference/functions/wp_nonce_field/)`wp-includes/functions.php` |

Retrieves or display nonce hidden field for forms.

  | 
| [get_user_setting()](https://developer.wordpress.org/reference/functions/get_user_setting/)`wp-includes/option.php` |

Retrieves user interface setting value based on setting name.

  | 
| [_e()](https://developer.wordpress.org/reference/functions/_e/)`wp-includes/l10n.php` |

Displays translated text.

  | 
| [__()](https://developer.wordpress.org/reference/functions/__/)`wp-includes/l10n.php` |

Retrieves the translation of $text.

  | 
| [esc_url()](https://developer.wordpress.org/reference/functions/esc_url/)`wp-includes/formatting.php` |

Checks and cleans a URL.

  | 
| [esc_attr()](https://developer.wordpress.org/reference/functions/esc_attr/)`wp-includes/formatting.php` |

Escaping for HTML attributes.

  | 
| [admin_url()](https://developer.wordpress.org/reference/functions/admin_url/)`wp-includes/link-template.php` |

Retrieves the URL to the admin area for the current site.

  | 
| [apply_filters()](https://developer.wordpress.org/reference/functions/apply_filters/)`wp-includes/plugin.php` |

Calls the callback functions that have been added to a filter hook.

  | 
| [add_filter()](https://developer.wordpress.org/reference/functions/add_filter/)`wp-includes/plugin.php` |

Adds a callback function to a filter hook.

  |

[Show 9 more](https://developer.wordpress.org/reference/functions/media_upload_gallery_form/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/media_upload_gallery_form/?output_format=md#)

## 󠀁[Changelog](https://developer.wordpress.org/reference/functions/media_upload_gallery_form/?output_format=md#changelog)󠁿

| Version | Description | 
| [2.5.0](https://developer.wordpress.org/reference/since/2.5.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fmedia_upload_gallery_form%2F)
before being able to contribute a note or feedback.