Outputs the legacy media upload form.
Parameters
$errors
arrayoptionalDefault:
null
Source
function media_upload_form( $errors = null ) {
global $type, $tab;
if ( ! _device_can_upload() ) {
echo '<p>' . sprintf(
/* translators: %s: https://apps.wordpress.org/ */
__( 'The web browser on your device cannot be used to upload files. You may be able to use the <a href="%s">native app for your device</a> instead.' ),
'https://apps.wordpress.org/'
) . '</p>';
return;
}
$upload_action_url = admin_url( 'async-upload.php' );
$post_id = isset( $_REQUEST['post_id'] ) ? (int) $_REQUEST['post_id'] : 0;
$_type = isset( $type ) ? $type : '';
$_tab = isset( $tab ) ? $tab : '';
$max_upload_size = wp_max_upload_size();
if ( ! $max_upload_size ) {
$max_upload_size = 0;
}
?>
<div id="media-upload-notice">
<?php
if ( isset( $errors['upload_notice'] ) ) {
echo $errors['upload_notice'];
}
?>
</div>
<div id="media-upload-error">
<?php
if ( isset( $errors['upload_error'] ) && is_wp_error( $errors['upload_error'] ) ) {
echo $errors['upload_error']->get_error_message();
}
?>
</div>
<?php
if ( is_multisite() && ! is_upload_space_available() ) {
/**
* Fires when an upload will exceed the defined upload space quota for a network site.
*
* @since 3.5.0
*/
do_action( 'upload_ui_over_quota' );
return;
}
/**
* Fires just before the legacy (pre-3.5.0) upload interface is loaded.
*
* @since 2.6.0
*/
do_action( 'pre-upload-ui' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
$post_params = array(
'post_id' => $post_id,
'_wpnonce' => wp_create_nonce( 'media-form' ),
'type' => $_type,
'tab' => $_tab,
'short' => '1',
);
/**
* Filters the media upload post parameters.
*
* @since 3.1.0 As 'swfupload_post_params'
* @since 3.3.0
*
* @param array $post_params An array of media upload parameters used by Plupload.
*/
$post_params = apply_filters( 'upload_post_params', $post_params );
/*
* Since 4.9 the `runtimes` setting is hardcoded in our version of Plupload to `html5,html4`,
* and the `flash_swf_url` and `silverlight_xap_url` are not used.
*/
$plupload_init = array(
'browse_button' => 'plupload-browse-button',
'container' => 'plupload-upload-ui',
'drop_element' => 'drag-drop-area',
'file_data_name' => 'async-upload',
'url' => $upload_action_url,
'filters' => array( 'max_file_size' => $max_upload_size . 'b' ),
'multipart_params' => $post_params,
);
/*
* Currently only iOS Safari supports multiple files uploading,
* but iOS 7.x has a bug that prevents uploading of videos when enabled.
* See #29602.
*/
if (
wp_is_mobile() &&
str_contains( $_SERVER['HTTP_USER_AGENT'], 'OS 7_' ) &&
str_contains( $_SERVER['HTTP_USER_AGENT'], 'like Mac OS X' )
) {
$plupload_init['multi_selection'] = false;
}
// Check if WebP images can be edited.
if ( ! wp_image_editor_supports( array( 'mime_type' => 'image/webp' ) ) ) {
$plupload_init['webp_upload_error'] = true;
}
// Check if AVIF images can be edited.
if ( ! wp_image_editor_supports( array( 'mime_type' => 'image/avif' ) ) ) {
$plupload_init['avif_upload_error'] = true;
}
/**
* Filters the default Plupload settings.
*
* @since 3.3.0
*
* @param array $plupload_init An array of default settings used by Plupload.
*/
$plupload_init = apply_filters( 'plupload_init', $plupload_init );
?>
<script type="text/javascript">
<?php
// Verify size is an int. If not return default value.
$large_size_h = absint( get_option( 'large_size_h' ) );
if ( ! $large_size_h ) {
$large_size_h = 1024;
}
$large_size_w = absint( get_option( 'large_size_w' ) );
if ( ! $large_size_w ) {
$large_size_w = 1024;
}
?>
var resize_height = <?php echo $large_size_h; ?>, resize_width = <?php echo $large_size_w; ?>,
wpUploaderInit = <?php echo wp_json_encode( $plupload_init ); ?>;
</script>
<div id="plupload-upload-ui" class="hide-if-no-js">
<?php
/**
* Fires before the upload interface loads.
*
* @since 2.6.0 As 'pre-flash-upload-ui'
* @since 3.3.0
*/
do_action( 'pre-plupload-upload-ui' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
?>
<div id="drag-drop-area">
<div class="drag-drop-inside">
<p class="drag-drop-info"><?php _e( 'Drop files to upload' ); ?></p>
<p><?php _ex( 'or', 'Uploader: Drop files here - or - Select Files' ); ?></p>
<p class="drag-drop-buttons"><input id="plupload-browse-button" type="button" value="<?php esc_attr_e( 'Select Files' ); ?>" class="button" /></p>
</div>
</div>
<?php
/**
* Fires after the upload interface loads.
*
* @since 2.6.0 As 'post-flash-upload-ui'
* @since 3.3.0
*/
do_action( 'post-plupload-upload-ui' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
?>
</div>
<div id="html-upload-ui" class="hide-if-js">
<?php
/**
* Fires before the upload button in the media upload interface.
*
* @since 2.6.0
*/
do_action( 'pre-html-upload-ui' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
?>
<p id="async-upload-wrap">
<label class="screen-reader-text" for="async-upload">
<?php
/* translators: Hidden accessibility text. */
_e( 'Upload' );
?>
</label>
<input type="file" name="async-upload" id="async-upload" />
<?php submit_button( __( 'Upload' ), 'primary', 'html-upload', false ); ?>
<a href="#" onclick="try{top.tb_remove();}catch(e){}; return false;"><?php _e( 'Cancel' ); ?></a>
</p>
<div class="clear"></div>
<?php
/**
* Fires after the upload button in the media upload interface.
*
* @since 2.6.0
*/
do_action( 'post-html-upload-ui' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
?>
</div>
<p class="max-upload-size">
<?php
/* translators: %s: Maximum allowed file size. */
printf( __( 'Maximum upload file size: %s.' ), esc_html( size_format( $max_upload_size ) ) );
?>
</p>
<?php
/**
* Fires on the post upload UI screen.
*
* Legacy (pre-3.5.0) media workflow hook.
*
* @since 2.6.0
*/
do_action( 'post-upload-ui' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
}
Hooks
- apply_filters( ‘plupload_init’,
array $plupload_init ) Filters the default Plupload settings.
- do_action( ‘post-html-upload-ui’ )
Fires after the upload button in the media upload interface.
- do_action( ‘post-plupload-upload-ui’ )
Fires after the upload interface loads.
- do_action( ‘post-upload-ui’ )
Fires on the post upload UI screen.
- do_action( ‘pre-html-upload-ui’ )
Fires before the upload button in the media upload interface.
- do_action( ‘pre-plupload-upload-ui’ )
Fires before the upload interface loads.
- do_action( ‘pre-upload-ui’ )
Fires just before the legacy (pre-3.5.0) upload interface is loaded.
- apply_filters( ‘upload_post_params’,
array $post_params ) Filters the media upload post parameters.
- do_action( ‘upload_ui_over_quota’ )
Fires when an upload will exceed the defined upload space quota for a network site.
Changelog
Version | Description |
---|---|
2.5.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.