wppaste
WordPress

media_handle_upload( string $file_id, int $post_id, array $post_data = array(), array $overrides = array('test_form' => \false) ): int|WP_Error

Since
2.5.0
Source
wp-admin/includes/media.php:295
Saves a file submitted from a POST request and create an attachment post for it.

Compatibility

WordPress
since 2.5.0
PHP
7.4–8.6-dev
  • 6.7.7
  • 6.8.8
  • 6.9.7
  • 7.0.4
  • 7.1.0

Present in every tracked release (6.7.7 to 7.1.0), and compiles on PHP 7.4 through 8.6-dev.

Parameters

$file_idstring
Index of the $_FILES array that the file was sent.
$post_idint
The post ID of a post to attach the media item to. Required, but can be set to 0, creating a media item that has no relationship to a post.
$post_dataarrayoptional
Overwrite some of the attachment.Default: array()
$overridesarrayoptional
Override the wp_handle_upload() behavior.Default: array('test_form' => \false)

Return value

int|WP_Error
ID of the attachment or a WP_Error object on failure.

Performance profile

How much work a call to media_handle_upload() does, and what it touches: the algorithmic scaling, the Zend instruction count per call across PHP versions, the hooks it hands control to, and the core code that calls it. Measured from the compiled opcodes, not a stopwatch, so every number is identical on any machine running the same PHP version, and every function in core is ranked by cost.

Cost class
Heavy

Reaches the database via get_post().

Scaling
Constant

No loop in the body: the same number of instructions runs whatever you pass in.

Instructions
31–188

Executed per call on PHP 8.5, depending on the branch taken. The body compiles to 293.

Plugin surface
None

Nothing here hands control to plugin code.

Called by
2

2 places in core call this, so the cost is paid more often than your own code shows.

What it touches

  • querycontent queryget_post()called directly
  • optionoption read or writeget_option()one call below media_handle_upload()
  • hookthird-party callbacksapply_filters()one call below media_handle_upload()

Further down the call graph this can also reach cache, serialize and transient. Those are the worst case, several calls deep and usually down an error path, not what a normal call pays.

What one call costs · 76 distinct outcomes

One number would be a lie: the work depends on which branch runs. These are every distinct cost media_handle_upload() can have, taken from its control-flow graph on PHP 8.5.

WhenInstructionsCalls it makes
isset($file)31–34current_time(), get_post(), wp_handle_upload()
!isset($file) && !$type && is_wp_error()76–84current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && is_wp_error()81–97current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_image_metadata(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && !$type && !is_wp_error() && headers_sent()87–95current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && !$type && !is_wp_error() && !headers_sent()91–99current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($meta) && empty($title) && is_wp_error()92–106current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && !is_wp_error() && headers_sent()92–108current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_image_metadata(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && is_wp_error()94–106current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_image_metadata(), sanitize_title(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && !is_wp_error() && !headers_sent()96–112current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_image_metadata(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($title) && is_wp_error()101–115current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && empty($meta) && is_wp_error()102–117current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && empty($meta) && empty($title) && !is_wp_error() && headers_sent()103–117current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
64 further outcomes, up to 188 instructions
!isset($file) && !is_wp_error() && headers_sent()105–117current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_image_metadata(), sanitize_title(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($meta) && empty($title) && !is_wp_error() && !headers_sent()107–121current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && !is_wp_error() && !headers_sent()109–121current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_image_metadata(), sanitize_title(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && is_wp_error()111–126current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && empty($title) && is_wp_error()112–126current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && empty($title) && !is_wp_error() && headers_sent()112–126current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && is_wp_error()113–128current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && empty($meta) && !is_wp_error() && headers_sent()113–128current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($title) && !is_wp_error() && !headers_sent()116–130current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($title) && is_wp_error()117–134current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && empty($meta) && !is_wp_error() && !headers_sent()117–132current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && is_wp_error()122–137current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && is_wp_error()122–136current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && !is_wp_error() && headers_sent()122–137current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($title) && !is_wp_error() && headers_sent()123–137current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && is_wp_error()124–138current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && !is_wp_error() && headers_sent()124–139current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !is_wp_error() && !headers_sent()126–141current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($title) && isset($track_number) && is_wp_error()127–141current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && is_wp_error()127–145current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && empty($title) && !is_wp_error() && !headers_sent()127–141current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($title) && is_wp_error()128–145current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && empty($title) && !is_wp_error() && headers_sent()128–145current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !is_wp_error() && !headers_sent()128–143current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($title) && !is_wp_error() && !headers_sent()132–149current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !empty($meta) && is_wp_error()133–147current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && !is_wp_error() && headers_sent()133–148current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !is_wp_error() && headers_sent()133–147current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !is_wp_error() && headers_sent()135–149current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && isset($track_number) && is_wp_error()137–152current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && !is_wp_error() && !headers_sent()137–152current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !is_wp_error() && !headers_sent()137–151current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($title) && isset($track_number) && is_wp_error()138–152current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && empty($title) && isset($track_number) && !is_wp_error() && headers_sent()138–152current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && is_wp_error()138–156current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && is_wp_error()138–155current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && !is_wp_error() && headers_sent()138–156current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($title) && !is_wp_error() && headers_sent()139–156current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !is_wp_error() && !headers_sent()139–153current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($title) && isset($track_number) && !is_wp_error() && !headers_sent()142–156current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !is_wp_error() && !headers_sent()142–160current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($title) && !is_wp_error() && !headers_sent()143–160current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !empty($meta) && !is_wp_error() && headers_sent()144–158current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && isset($track_number) && is_wp_error()148–163current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && isset($track_number) && is_wp_error()148–162current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && isset($track_number) && !is_wp_error() && headers_sent()148–163current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !empty($meta) && !is_wp_error() && !headers_sent()148–162current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($title) && isset($track_number) && !is_wp_error() && headers_sent()149–163current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !empty($meta) && is_wp_error()149–166current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && !is_wp_error() && headers_sent()149–167current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !is_wp_error() && headers_sent()149–166current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && isset($track_number) && !is_wp_error() && !headers_sent()152–167current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && empty($title) && isset($track_number) && !is_wp_error() && !headers_sent()153–167current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !is_wp_error() && !headers_sent()153–171current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !is_wp_error() && !headers_sent()153–170current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !empty($meta) && isset($track_number) && is_wp_error()159–173current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error()
!isset($file) && $type && isset($track_number) && !is_wp_error() && headers_sent()159–174current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && isset($track_number) && !is_wp_error() && headers_sent()159–173current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !empty($meta) && !is_wp_error() && headers_sent()160–177current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && isset($track_number) && !is_wp_error() && !headers_sent()163–178current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && isset($track_number) && !is_wp_error() && !headers_sent()163–177current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !empty($meta) && !is_wp_error() && !headers_sent()164–181current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !empty($meta) && isset($track_number) && !is_wp_error() && headers_sent()170–184current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()
!isset($file) && $type && !empty($meta) && isset($track_number) && !is_wp_error() && !headers_sent()174–188current_time(), get_post(), wp_handle_upload(), pathinfo(), wp_basename(), sanitize_text_field(), wp_read_audio_metadata(), __(), sprintf(), __(), sprintf(), explode(), __(), number_format_i18n(), number_format_i18n(), sprintf(), __(), sprintf(), post_mime_type(), wp_insert_attachment(), is_wp_error(), headers_sent(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata()

This body has more branch combinations than are worth enumerating, so the table covers the outcomes found first rather than every one that exists.

Across PHP versions

PHPCompiledExecutedBranchesNotes
8.6-dev29331–18827
8.529331–18827
8.429331–1882719 fewer instructions than PHP 8.3
8.331231–19827
8.231231–19827
8.131231–19827
7.431231–19827

An instruction is not a fixed amount of time, so a matching count is not necessarily the same speed; what it rules out is a difference in the work itself.

Uses · 16

Show all 16

Used by · 2

Source code

function media_handle_upload( $file_id, $post_id, $post_data = array(), $overrides = array( 'test_form' => false ) ) {	$time = current_time( 'mysql' );	$post = get_post( $post_id ); 	if ( $post ) {		// The post date doesn't usually matter for pages, so don't backdate this upload.		if ( 'page' !== $post->post_type && substr( $post->post_date, 0, 4 ) > 0 ) {			$time = $post->post_date;		}	} 	$file = wp_handle_upload( $_FILES[ $file_id ], $overrides, $time ); 	if ( isset( $file['error'] ) ) {		return new WP_Error( 'upload_error', $file['error'] );	} 	$name = $_FILES[ $file_id ]['name'];	$ext  = pathinfo( $name, PATHINFO_EXTENSION );	$name = wp_basename( $name, ".$ext" ); 	$url     = $file['url'];	$type    = $file['type'];	$file    = $file['file'];	$title   = sanitize_text_field( $name );	$content = '';	$excerpt = ''; 	if ( preg_match( '#^audio#', $type ) ) {		$meta = wp_read_audio_metadata( $file ); 		if ( ! empty( $meta['title'] ) ) {			$title = $meta['title'];		} 		if ( ! empty( $title ) ) { 			if ( ! empty( $meta['album'] ) && ! empty( $meta['artist'] ) ) {				/* translators: 1: Audio track title, 2: Album title, 3: Artist name. */				$content .= sprintf( __( '"%1$s" from %2$s by %3$s.' ), $title, $meta['album'], $meta['artist'] );			} elseif ( ! empty( $meta['album'] ) ) {				/* translators: 1: Audio track title, 2: Album title. */				$content .= sprintf( __( '"%1$s" from %2$s.' ), $title, $meta['album'] );			} elseif ( ! empty( $meta['artist'] ) ) {				/* translators: 1: Audio track title, 2: Artist name. */				$content .= sprintf( __( '"%1$s" by %2$s.' ), $title, $meta['artist'] );			} else {				/* translators: %s: Audio track title. */				$content .= sprintf( __( '"%s".' ), $title );			}		} elseif ( ! empty( $meta['album'] ) ) { 			if ( ! empty( $meta['artist'] ) ) {				/* translators: 1: Audio album title, 2: Artist name. */				$content .= sprintf( __( '%1$s by %2$s.' ), $meta['album'], $meta['artist'] );			} else {				$content .= $meta['album'] . '.';			}		} elseif ( ! empty( $meta['artist'] ) ) { 			$content .= $meta['artist'] . '.'; 		} 		if ( ! empty( $meta['year'] ) ) {			/* translators: Audio file track information. %d: Year of audio track release. */			$content .= ' ' . sprintf( __( 'Released: %d.' ), $meta['year'] );		} 		if ( ! empty( $meta['track_number'] ) ) {			$track_number = explode( '/', $meta['track_number'] ); 			if ( is_numeric( $track_number[0] ) ) {				if ( isset( $track_number[1] ) && is_numeric( $track_number[1] ) ) {					$content .= ' ' . sprintf(						/* translators: Audio file track information. 1: Audio track number, 2: Total audio tracks. */						__( 'Track %1$s of %2$s.' ),						number_format_i18n( $track_number[0] ),						number_format_i18n( $track_number[1] )					);

Changelog

Introduced in 2.5.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 6.9.7 tag, from src/wp-admin/includes/media.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.