wppaste
WordPress

WP_REST_Attachments_Controller::create_item( WP_REST_Request $request ): WP_REST_Response|WP_Error

Since
4.7.0
Source
wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:199
Creates a single attachment.

Compatibility

WordPress
since 4.7.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
Full details about the request.

Return value

WP_REST_Response|WP_Error
Response object on success, WP_Error object on failure.

Performance profile

How much work a call to WP_REST_Attachments_Controller::create_item() 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
12–156

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

Plugin surface
1 hook

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

Called by
0

Nothing in core calls this; the cost is only what you spend yourself.

What it touches

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

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

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

WhenInstructionsCalls it makes
empty($request) && is_wp_error()12->insert_attachment(), is_wp_error()
!empty($request)19get_post_type(), __()
!empty($request) && is_wp_error()19get_post_type(), ->insert_attachment(), is_wp_error()
empty($request) && !empty($value)37->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error()
empty($request) && !isset($request)40–44->insert_attachment(), is_wp_error(), ->get_item_schema(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
empty($request) && !empty($value)41–43->insert_attachment(), is_wp_error(), ->get_item_schema(), ->update_value(), is_wp_error()
!empty($request) && !empty($value)44get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error()
empty($request) && isset($request) && !empty($value)47->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error()
!empty($request) && !isset($request)47–51get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
!empty($request) && !empty($value)48–50get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->update_value(), is_wp_error()
empty($request) && !isset($request)49–53->insert_attachment(), is_wp_error(), ->get_item_schema(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
empty($request) && isset($request)50–54->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
67 further outcomes, up to 156 instructions
empty($request) && isset($request) && !empty($value)51–53->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->update_value(), is_wp_error()
empty($request) && !empty($value)53–55->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
empty($request) && !empty($value)54->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error()
empty($request) && !empty($value)54–56->insert_attachment(), is_wp_error(), ->get_item_schema(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
!empty($request) && isset($request) && !empty($value)54get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error()
!empty($request) && !isset($request)56–60get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
!empty($request) && isset($request)57–61get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
!empty($request) && isset($request) && !empty($value)58–60get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->update_value(), is_wp_error()
empty($request) && isset($request)59–63->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
!empty($request) && !empty($value)60–62get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
!empty($request) && !empty($value)61get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error()
!empty($request) && !empty($value)61–63get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
empty($request) && !empty($value)62–64->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
empty($request) && !empty($value)63–65->insert_attachment(), is_wp_error(), ->get_item_schema(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
empty($request) && isset($request) && !empty($value)63–65->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
empty($request) && isset($request) && !empty($value)64->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error()
empty($request) && isset($request) && !empty($value)64–66->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
!empty($request) && isset($request)66–70get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
empty($request) && !empty($value)67->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
!empty($request) && !empty($value)69–71get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
!empty($request) && !empty($value)70–72get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
!empty($request) && isset($request) && !empty($value)70–72get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
!empty($request) && isset($request) && !empty($value)71get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error()
!empty($request) && isset($request) && !empty($value)71–73get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
empty($request) && isset($request) && !empty($value)72–74->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
empty($request) && isset($request) && !empty($value)73–75->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
!empty($request) && !empty($value)74get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
empty($request) && !empty($value)76->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
empty($request) && isset($request) && !empty($value)77->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
!empty($request) && isset($request) && !empty($value)79–81get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
!empty($request) && isset($request) && !empty($value)80–82get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
!empty($request) && !empty($value)83get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
!empty($request) && isset($request) && !empty($value)84get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error()
empty($request) && isset($request) && !empty($value)86->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
!empty($request) && isset($request) && !empty($value)93get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error()
empty($request) && !is_wp_error() && !isset($request) && !wp_is_serving_rest_request()108–112->insert_attachment(), is_wp_error(), ->get_item_schema(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && !isset($request) && wp_is_serving_rest_request()112–116->insert_attachment(), is_wp_error(), ->get_item_schema(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && !isset($request) && !wp_is_serving_rest_request()115–119get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && isset($request) && !wp_is_serving_rest_request()118–122->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && !isset($request) && wp_is_serving_rest_request()119–123get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && !empty($value) && !wp_is_serving_rest_request()121–123->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && !empty($value) && !wp_is_serving_rest_request()122–124->insert_attachment(), is_wp_error(), ->get_item_schema(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && isset($request) && wp_is_serving_rest_request()122–126->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && !empty($value) && wp_is_serving_rest_request()125–127->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && isset($request) && !wp_is_serving_rest_request()125–129get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && !empty($value) && wp_is_serving_rest_request()126–128->insert_attachment(), is_wp_error(), ->get_item_schema(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && !empty($value) && !wp_is_serving_rest_request()128–130get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && !empty($value) && !wp_is_serving_rest_request()129–131get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && isset($request) && wp_is_serving_rest_request()129–133get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && isset($request) && !empty($value) && !wp_is_serving_rest_request()131–133->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && isset($request) && !empty($value) && !wp_is_serving_rest_request()132–134->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && !empty($value) && wp_is_serving_rest_request()132–134get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && !empty($value) && wp_is_serving_rest_request()133–135get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && !empty($value) && !wp_is_serving_rest_request()135->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && isset($request) && !empty($value) && wp_is_serving_rest_request()135–137->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && isset($request) && !empty($value) && wp_is_serving_rest_request()136–138->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && isset($request) && !empty($value) && !wp_is_serving_rest_request()138–140get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && !empty($value) && wp_is_serving_rest_request()139->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && isset($request) && !empty($value) && !wp_is_serving_rest_request()139–141get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && !empty($value) && !wp_is_serving_rest_request()142get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && isset($request) && !empty($value) && wp_is_serving_rest_request()142–144get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && isset($request) && !empty($value) && wp_is_serving_rest_request()143–145get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && isset($request) && !empty($value) && !wp_is_serving_rest_request()145->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && !empty($value) && wp_is_serving_rest_request()146get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
empty($request) && !is_wp_error() && isset($request) && !empty($value) && wp_is_serving_rest_request()149->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && isset($request) && !empty($value) && !wp_is_serving_rest_request()152get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()
!empty($request) && !is_wp_error() && isset($request) && !empty($value) && wp_is_serving_rest_request()156get_post_type(), ->insert_attachment(), is_wp_error(), ->get_item_schema(), sanitize_text_field(), update_post_meta(), ->handle_featured_media(), is_wp_error(), ->update_value(), is_wp_error(), get_post(), ->update_additional_fields_for_object(), is_wp_error(), ->handle_terms(), is_wp_error(), ->set_param(), do_action(), wp_after_insert_post(), wp_is_serving_rest_request(), header(), wp_generate_attachment_metadata(), wp_update_attachment_metadata(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header()

Across PHP versions

Compiles the same on PHP 7.4, 8.1, 8.2, 8.3, 8.4, 8.5 and 8.6-dev: 170 instructions, 12–156 executed per call, 13 branches. The work does not change between versions.

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::create_item() runs, in this order:

  1. do_action( rest_after_insert_attachment )actionline 264 (+65 into the body)

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

Uses · 20

Show all 20

Source code

	public function create_item( $request ) {		if ( ! empty( $request['post'] ) && in_array( get_post_type( $request['post'] ), array( 'revision', 'attachment' ), true ) ) {			return new WP_Error(				'rest_invalid_param',				__( 'Invalid parent type.' ),				array( 'status' => 400 )			);		} 		$insert = $this->insert_attachment( $request ); 		if ( is_wp_error( $insert ) ) {			return $insert;		} 		$schema = $this->get_item_schema(); 		// Extract by name.		$attachment_id = $insert['attachment_id'];		$file          = $insert['file']; 		if ( isset( $request['alt_text'] ) ) {			update_post_meta( $attachment_id, '_wp_attachment_image_alt', sanitize_text_field( $request['alt_text'] ) );		} 		if ( ! empty( $schema['properties']['featured_media'] ) && isset( $request['featured_media'] ) ) {			$thumbnail_update = $this->handle_featured_media( $request['featured_media'], $attachment_id ); 			if ( is_wp_error( $thumbnail_update ) ) {				return $thumbnail_update;			}		} 		if ( ! empty( $schema['properties']['meta'] ) && isset( $request['meta'] ) ) {			$meta_update = $this->meta->update_value( $request['meta'], $attachment_id ); 			if ( is_wp_error( $meta_update ) ) {				return $meta_update;			}		} 		$attachment    = get_post( $attachment_id );		$fields_update = $this->update_additional_fields_for_object( $attachment, $request ); 		if ( is_wp_error( $fields_update ) ) {			return $fields_update;		} 		$terms_update = $this->handle_terms( $attachment_id, $request ); 		if ( is_wp_error( $terms_update ) ) {			return $terms_update;		} 		$request->set_param( 'context', 'edit' ); 		/**		 * Fires after a single attachment is completely created or updated via the REST API.		 *		 * @since 5.0.0		 *		 * @param WP_Post         $attachment Inserted or updated attachment object.		 * @param WP_REST_Request $request    Request object.		 * @param bool            $creating   True when creating an attachment, false when updating.		 */		do_action( 'rest_after_insert_attachment', $attachment, $request, true ); 		wp_after_insert_post( $attachment, false, null ); 		if ( wp_is_serving_rest_request() ) {			/*			 * Set a custom header with the attachment_id.			 * Used by the browser/client to resume creating image sub-sizes after a PHP fatal error.			 */			header( 'X-WP-Upload-Attachment-ID: ' . $attachment_id );		} 		// Include media and image functions to get access to wp_generate_attachment_metadata().		require_once ABSPATH . 'wp-admin/includes/media.php';		require_once ABSPATH . 'wp-admin/includes/image.php';

Changelog

Introduced in 4.7.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.