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
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
$_FILESarray 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
- Scaling
- Constant
- Instructions
- 31–188
- Plugin surface
- None
- Called by
- 2
Reaches the database via get_post().
No loop in the body: the same number of instructions runs whatever you pass in.
Executed per call on PHP 8.5, depending on the branch taken. The body compiles to 293.
Nothing here hands control to plugin code.
2 places in core call this, so the cost is paid more often than your own code shows.
What it touches
- querycontent query
get_post()called directly - optionoption read or write
get_option()one call below media_handle_upload() - hookthird-party callbacks
apply_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.
| When | Instructions | Calls it makes |
|---|---|---|
isset($file) | 31–34 | current_time(), get_post(), wp_handle_upload() |
!isset($file) && !$type && is_wp_error() | 76–84 | current_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–97 | current_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–95 | current_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–99 | current_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–106 | current_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–108 | current_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–106 | current_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–112 | current_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–115 | current_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–117 | current_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–117 | current_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–117 | current_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–121 | current_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–121 | current_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–126 | current_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–126 | current_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–126 | current_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–128 | current_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–128 | current_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–130 | current_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–134 | current_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–132 | current_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–137 | current_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–136 | current_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–137 | current_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–137 | current_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–138 | current_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–139 | current_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–141 | current_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–141 | current_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–145 | current_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–141 | current_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–145 | current_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–145 | current_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–143 | current_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–149 | current_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–147 | current_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–148 | current_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–147 | current_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–149 | current_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–152 | current_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–152 | current_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–151 | current_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–152 | current_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–152 | current_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–156 | current_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–155 | current_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–156 | current_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–156 | current_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–153 | current_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–156 | current_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–160 | current_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–160 | current_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–158 | current_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–163 | current_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–162 | current_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–163 | current_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–162 | current_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–163 | current_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–166 | current_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–167 | current_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–166 | current_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–167 | current_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–167 | current_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–171 | current_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–170 | current_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–173 | current_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–174 | current_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–173 | current_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–177 | current_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–178 | current_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–177 | current_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–181 | current_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–184 | current_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–188 | current_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
| PHP | Compiled | Executed | Branches | Notes |
|---|---|---|---|---|
| 8.6-dev | 293 | 31–188 | 27 | |
| 8.5 | 293 | 31–188 | 27 | |
| 8.4 | 293 | 31–188 | 27 | 19 fewer instructions than PHP 8.3 |
| 8.3 | 312 | 31–198 | 27 | |
| 8.2 | 312 | 31–198 | 27 | |
| 8.1 | 312 | 31–198 | 27 | |
| 7.4 | 312 | 31–198 | 27 |
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
- current_time()Retrieves the current time based on specified type.
- get_post()Retrieves post data given a post ID or post object.
- wp_handle_upload()Wrapper for _wp_handle_upload().
- wp_basename()i18n-friendly version of basename().
- sanitize_text_field()Sanitizes a string from user input or from the database.
- wp_read_audio_metadata()Retrieves metadata from an audio file's ID3 tags.
- __()Retrieves the translation of $text.
- number_format_i18n()Converts float number to format based on the locale.
- str_starts_with()Polyfill for `str_starts_with()` function added in PHP 8.0.
- wp_read_image_metadata()Gets extended image metadata, exif or iptc as available.
- sanitize_title()Sanitizes a string into a slug, which can be used in URLs or HTML attributes.
- wp_insert_attachment()Inserts an attachment.
Show all 16
- is_wp_error()Checks whether the given variable is a WordPress Error.
- wp_update_attachment_metadata()Updates metadata for an attachment.
- wp_generate_attachment_metadata()Generates attachment meta data and create image sub-sizes for images.
- WP_Error::__construct()Initializes the error.
Used by · 2
- wp_ajax_upload_attachment()Handles uploading attachments via AJAX.
- wp_media_upload_handler()Handles the process of uploading media.
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.
Signature, return type and hooks compared across 5 parsed releases.
About this page
- Parsed data
- Generated from the wordpress-develop 6.7.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.