On this page
wp_media_upload_handler(): null|string
Handles the process of uploading media.
Return
null|string
Source
File: wp-admin/includes/media.php. View all references
function wp_media_upload_handler() {
$errors = array();
$id = 0;
if ( isset( $_POST['html-upload'] ) && ! empty( $_FILES ) ) {
check_admin_referer( 'media-form' );
// Upload File button was clicked.
$id = media_handle_upload( 'async-upload', $_REQUEST['post_id'] );
unset( $_FILES );
if ( is_wp_error( $id ) ) {
$errors['upload_error'] = $id;
$id = false;
}
}
if ( ! empty( $_POST['insertonlybutton'] ) ) {
$src = $_POST['src'];
if ( ! empty( $src ) && ! strpos( $src, '://' ) ) {
$src = "http://$src";
}
if ( isset( $_POST['media_type'] ) && 'image' !== $_POST['media_type'] ) {
$title = esc_html( wp_unslash( $_POST['title'] ) );
if ( empty( $title ) ) {
$title = esc_html( wp_basename( $src ) );
}
if ( $title && $src ) {
$html = "<a href='" . esc_url( $src ) . "'>$title</a>";
}
$type = 'file';
$ext = preg_replace( '/^.+?\.([^.]+)$/', '$1', $src );
if ( $ext ) {
$ext_type = wp_ext2type( $ext );
if ( 'audio' === $ext_type || 'video' === $ext_type ) {
$type = $ext_type;
}
}
/**
* Filters the URL sent to the editor for a specific media type.
*
* The dynamic portion of the hook name, `$type`, refers to the type
* of media being sent.
*
* Possible hook names include:
*
* - `audio_send_to_editor_url`
* - `file_send_to_editor_url`
* - `video_send_to_editor_url`
*
* @since 3.3.0
*
* @param string $html HTML markup sent to the editor.
* @param string $src Media source URL.
* @param string $title Media title.
*/
$html = apply_filters( "{$type}_send_to_editor_url", $html, sanitize_url( $src ), $title );
} else {
$align = '';
$alt = esc_attr( wp_unslash( $_POST['alt'] ) );
if ( isset( $_POST['align'] ) ) {
$align = esc_attr( wp_unslash( $_POST['align'] ) );
$class = " class='align$align'";
}
if ( ! empty( $src ) ) {
$html = "<img src='" . esc_url( $src ) . "' alt='$alt'$class />";
}
/**
* Filters the image URL sent to the editor.
*
* @since 2.8.0
*
* @param string $html HTML markup sent to the editor for an image.
* @param string $src Image source URL.
* @param string $alt Image alternate, or alt, text.
* @param string $align The image alignment. Default 'alignnone'. Possible values include
* 'alignleft', 'aligncenter', 'alignright', 'alignnone'.
*/
$html = apply_filters( 'image_send_to_editor_url', $html, sanitize_url( $src ), $alt, $align );
}
return media_send_to_editor( $html );
}
if ( isset( $_POST['save'] ) ) {
$errors['upload_notice'] = __( 'Saved.' );
wp_enqueue_script( 'admin-gallery' );
return wp_iframe( 'media_upload_gallery_form', $errors );
} elseif ( ! empty( $_POST ) ) {
$return = media_upload_form_handler();
if ( is_string( $return ) ) {
return $return;
}
if ( is_array( $return ) ) {
$errors = $return;
}
}
if ( isset( $_GET['tab'] ) && 'type_url' === $_GET['tab'] ) {
$type = 'image';
if ( isset( $_GET['type'] ) && in_array( $_GET['type'], array( 'video', 'audio', 'file' ), true ) ) {
$type = $_GET['type'];
}
return wp_iframe( 'media_upload_type_url_form', $type, $errors, $id );
}
return wp_iframe( 'media_upload_type_form', 'image', $errors, $id );
}
Hooks
- apply_filters( 'image_send_to_editor_url',
string $html ,string $src ,string $alt ,string $align ) -
Filters the image URL sent to the editor.
- apply_filters( "{$type}_send_to_editor_url",
string $html ,string $src ,string $title ) -
Filters the URL sent to the editor for a specific media type.
Related
Uses
| Uses | Description |
|---|---|
| media_upload_form_handler() wp-admin/includes/media.php | Handles form submissions for the legacy media uploader. |
| media_handle_upload() wp-admin/includes/media.php | Saves a file submitted from a POST request and create an attachment post for it. |
| media_send_to_editor() wp-admin/includes/media.php | Adds image HTML to editor. |
| wp_iframe() wp-admin/includes/media.php | Outputs the iframe to display the media upload page. |
| check_admin_referer() wp-includes/pluggable.php | Ensures intent by verifying that a user was referred from another admin page with the correct security nonce. |
| sanitize_url() wp-includes/formatting.php | Sanitizes a URL for database or redirect usage. |
| wp_enqueue_script() wp-includes/functions.wp-scripts.php | Enqueue a script. |
| wp_ext2type() wp-includes/functions.php | Retrieves the file type based on the extension name. |
| __() wp-includes/l10n.php | Retrieves the translation of $text. |
| wp_unslash() wp-includes/formatting.php | Removes slashes from a string or recursively removes slashes from strings within an array. |
| wp_basename() wp-includes/formatting.php | i18n-friendly version of basename(). |
| esc_html() wp-includes/formatting.php | Escaping for HTML blocks. |
| esc_url() wp-includes/formatting.php | Checks and cleans a URL. |
| esc_attr() wp-includes/formatting.php | Escaping for HTML attributes. |
| apply_filters() wp-includes/plugin.php | Calls the callback functions that have been added to a filter hook. |
| is_wp_error() wp-includes/load.php | Checks whether the given variable is a WordPress Error. |
Used By
| Used By | Description |
|---|---|
| media_upload_image() wp-admin/includes/deprecated.php | Handles uploading an image. |
| media_upload_audio() wp-admin/includes/deprecated.php | Handles uploading an audio file. |
| media_upload_video() wp-admin/includes/deprecated.php | Handles uploading a video file. |
| media_upload_file() wp-admin/includes/deprecated.php | Handles uploading a generic file. |
Changelog
| Version | Description |
|---|---|
| 2.5.0 | Introduced. |
© 2003–2022 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/wp_media_upload_handler