wppaste
WordPress

WP_REST_Attachments_Controller::insert_attachment( WP_REST_Request $request ): array|WP_Error

Since
5.3.0
Source
wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:302
Inserts the attachment post in the database. Does not update the attachment meta.

Compatibility

WordPress
since 5.3.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

$requestWP_REST_Request

Return value

array|WP_Error

Performance profile

How much work a call to WP_REST_Attachments_Controller::insert_attachment() 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
24–164

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

Plugin surface
1 hook

Third-party callbacks on 'rest_insert_attachment' run inside this call, and their cost is not bounded by anything here.

Called by
1

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

What it touches

  • querycontent queryget_post()called directly
  • hookthird-party callbacksdo_action()called directly

Further down the call graph this can also reach option, serialize, cache 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 · 82 distinct outcomes

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

WhenInstructionsCalls it makes
empty($request) && !empty($files) && is_wp_error()24->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error()
empty($request) && empty($files) && is_wp_error()25->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error()
empty($request) && !empty($files) && !empty($attachment) && !$alt95–118->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && !empty($attachment) && !$alt96–119->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !is_wp_error() && !empty($attachment) && !$alt100–123->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && !empty($attachment) && !$alt101–124->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && empty($attachment) && !$alt102–125->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && empty($attachment) && !$alt103–126->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !empty($attachment) && $alt103–126->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
!empty($request) && empty($files) && !empty($attachment) && !$alt103–123->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && !empty($attachment) && $alt104–127->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !is_wp_error() && empty($attachment) && !$alt107–130->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
70 further outcomes, up to 164 instructions
empty($request) && empty($files) && !is_wp_error() && empty($attachment) && !$alt108–131->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && !is_wp_error() && !empty($attachment) && $alt108–131->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
!empty($request) && empty($files) && !is_wp_error() && !empty($attachment) && !$alt108–128->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && !empty($attachment) && $alt109–132->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && empty($attachment) && $alt110–133->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
!empty($request) && empty($files) && empty($attachment) && !$alt110–128->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !empty($value) && !$alt111–133->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !empty($image_meta) && !empty($attachment) && !$alt111–128->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && empty($attachment) && $alt111–134->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
!empty($request) && empty($files) && !empty($attachment) && $alt111–129->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && !empty($value) && !$alt112–134->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && !empty($image_meta) && !empty($attachment) && !$alt112–129->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !is_wp_error() && empty($attachment) && $alt115–138->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
!empty($request) && empty($files) && !is_wp_error() && empty($attachment) && !$alt115–133->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && !is_wp_error() && !empty($value) && !$alt116–138->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && !is_wp_error() && !empty($image_meta) && !empty($attachment) && !$alt116–133->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && empty($attachment) && $alt116–139->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
!empty($request) && empty($files) && !is_wp_error() && !empty($attachment) && $alt116–134->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && !empty($value) && !$alt117–139->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && !empty($image_meta) && !empty($attachment) && !$alt117–134->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && empty($attachment) && !empty($value) && !$alt118–140->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !empty($image_meta) && empty($attachment) && !$alt118–135->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
!empty($request) && empty($files) && empty($attachment) && $alt118–136->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && empty($attachment) && !empty($value) && !$alt119–141->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && !empty($image_meta) && empty($attachment) && !$alt119–136->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !empty($value) && $alt119–141->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !empty($image_meta) && !empty($attachment) && $alt119–136->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
!empty($request) && empty($files) && !empty($value) && !$alt119–136->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && !empty($value) && $alt120–142->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && !empty($image_meta) && !empty($attachment) && $alt120–137->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !is_wp_error() && empty($attachment) && !empty($value) && !$alt123–145->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && !is_wp_error() && !empty($image_meta) && empty($attachment) && !$alt123–140->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
!empty($request) && empty($files) && !is_wp_error() && empty($attachment) && $alt123–141->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && empty($attachment) && !empty($value) && !$alt124–146->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && !empty($image_meta) && empty($attachment) && !$alt124–141->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && !is_wp_error() && !empty($value) && $alt124–146->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && !is_wp_error() && !empty($image_meta) && !empty($attachment) && $alt124–141->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
!empty($request) && empty($files) && !is_wp_error() && !empty($value) && !$alt124–141->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && !empty($value) && $alt125–147->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && !empty($image_meta) && !empty($attachment) && $alt125–142->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && empty($attachment) && !empty($value) && $alt126–148->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !empty($image_meta) && empty($attachment) && $alt126–143->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
!empty($request) && empty($files) && empty($attachment) && !empty($value) && !$alt126–143->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !empty($image_meta) && !empty($value) && !$alt127–143->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && empty($attachment) && !empty($value) && $alt127–149->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && !empty($image_meta) && empty($attachment) && $alt127–144->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
!empty($request) && empty($files) && !empty($value) && $alt127–144->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && !empty($image_meta) && !empty($value) && !$alt128–144->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !is_wp_error() && empty($attachment) && !empty($value) && $alt131–153->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && !is_wp_error() && !empty($image_meta) && empty($attachment) && $alt131–148->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
!empty($request) && empty($files) && !is_wp_error() && empty($attachment) && !empty($value) && !$alt131–148->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && !is_wp_error() && !empty($image_meta) && !empty($value) && !$alt132–148->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && empty($attachment) && !empty($value) && $alt132–154->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && !empty($image_meta) && empty($attachment) && $alt132–149->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
!empty($request) && empty($files) && !is_wp_error() && !empty($value) && $alt132–149->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && !empty($image_meta) && !empty($value) && !$alt133–149->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && !empty($image_meta) && empty($attachment) && !empty($value) && !$alt134–150->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
!empty($request) && empty($files) && empty($attachment) && !empty($value) && $alt134–151->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && !empty($image_meta) && empty($attachment) && !empty($value) && !$alt135–151->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !empty($image_meta) && !empty($value) && $alt135–151->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && !empty($image_meta) && !empty($value) && $alt136–152->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !is_wp_error() && !empty($image_meta) && empty($attachment) && !empty($value) && !$alt139–155->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
!empty($request) && empty($files) && !is_wp_error() && empty($attachment) && !empty($value) && $alt139–156->get_file_params(), ->get_headers(), get_post(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && !empty($image_meta) && empty($attachment) && !empty($value) && !$alt140–156->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && !is_wp_error() && !empty($image_meta) && !empty($value) && $alt140–156->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && !empty($image_meta) && !empty($value) && $alt141–157->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
empty($request) && !empty($files) && !empty($image_meta) && empty($attachment) && !empty($value) && $alt142–158->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && empty($files) && !empty($image_meta) && empty($attachment) && !empty($value) && $alt143–159->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), ->get_error_code(), ->add_data()
empty($request) && !empty($files) && !is_wp_error() && !empty($image_meta) && empty($attachment) && !empty($value) && $alt147–163->get_file_params(), ->get_headers(), ->upload_from_file(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()
empty($request) && empty($files) && !is_wp_error() && !empty($image_meta) && empty($attachment) && !empty($value) && $alt148–164->get_file_params(), ->get_headers(), ->get_body(), ->upload_from_data(), is_wp_error(), wp_basename(), pathinfo(), wp_read_image_metadata(), sanitize_title(), ->prepare_item_for_database(), strrpos(), wp_basename(), wp_slash(), wp_insert_attachment(), sanitize_text_field(), update_post_meta(), is_wp_error(), get_post(), do_action()

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-dev20124–16421
8.520124–16421
8.420124–1642124 fewer instructions than PHP 8.3
8.322524–18521
8.222524–18521
8.122524–18521
7.422524–18521

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.

Hooks and filters fired · 1

One hook fires while WP_REST_Attachments_Controller::insert_attachment() runs, in this order:

  1. do_action( rest_insert_attachment )actionline 405 (+103 into the body)

    Fires after a single attachment is created or updated via the REST API.

Uses · 13

Show all 13

Used by · 1

Source code

	protected function insert_attachment( $request ) {		// Get the file via $_FILES or raw data.		$files   = $request->get_file_params();		$headers = $request->get_headers(); 		$time = null; 		// Matches logic in media_handle_upload().		if ( ! empty( $request['post'] ) ) {			$post = get_post( $request['post'] );			// The post date doesn't usually matter for pages, so don't backdate this upload.			if ( $post && 'page' !== $post->post_type && substr( $post->post_date, 0, 4 ) > 0 ) {				$time = $post->post_date;			}		} 		if ( ! empty( $files ) ) {			$file = $this->upload_from_file( $files, $headers, $time );		} else {			$file = $this->upload_from_data( $request->get_body(), $headers, $time );		} 		if ( is_wp_error( $file ) ) {			return $file;		} 		$name       = wp_basename( $file['file'] );		$name_parts = pathinfo( $name );		$name       = trim( substr( $name, 0, -( 1 + strlen( $name_parts['extension'] ) ) ) ); 		$url  = $file['url'];		$type = $file['type'];		$file = $file['file'];		$alt  = ''; 		// Include image functions to get access to wp_read_image_metadata().		require_once ABSPATH . 'wp-admin/includes/image.php'; 		// Use image exif/iptc data for title and caption defaults if possible.		$image_meta = wp_read_image_metadata( $file ); 		if ( ! empty( $image_meta ) ) {			if ( empty( $request['title'] ) && trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) {				$request['title'] = $image_meta['title'];			} 			if ( empty( $request['caption'] ) && trim( $image_meta['caption'] ) ) {				$request['caption'] = $image_meta['caption'];			} 			if ( empty( $request['alt'] ) && trim( $image_meta['alt'] ) ) {				$alt = $image_meta['alt'];			}		} 		$attachment = $this->prepare_item_for_database( $request ); 		$attachment->post_mime_type = $type;		$attachment->guid           = $url; 		// If the title was not set, use the original filename.		if ( empty( $attachment->post_title ) && ! empty( $files['file']['name'] ) ) {			// Remove the file extension (after the last `.`)			$tmp_title = substr( $files['file']['name'], 0, strrpos( $files['file']['name'], '.' ) ); 			if ( ! empty( $tmp_title ) ) {				$attachment->post_title = $tmp_title;			}		} 		// Fall back to the original approach.		if ( empty( $attachment->post_title ) ) {			$attachment->post_title = preg_replace( '/\.[^.]+$/', '', wp_basename( $file ) );		} 		// $post_parent is inherited from $attachment['post_parent'].		$id = wp_insert_attachment( wp_slash( (array) $attachment ), $file, 0, true, false ); 		if ( trim( $alt ) ) {			update_post_meta( $id, '_wp_attachment_image_alt', sanitize_text_field( $alt ) );

Changelog

Introduced in 5.3.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 7.0.4 tag, from src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.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.