wppaste
WordPress

WP_REST_Attachments_Controller::prepare_item_for_response( WP_Post $item, WP_REST_Request $request ): WP_REST_Response

Since
4.7.0, 5.9.0
Source
wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php:908
Prepares a single attachment output for response.

Compatibility

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

$itemWP_Post
Attachment object.
$requestWP_REST_Request
Request object.

Return value

WP_REST_Response
Response object.

Performance profile

How much work a call to WP_REST_Attachments_Controller::prepare_item_for_response() 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
Scales with input

The body loops, so the work grows with what you pass in.

Instructions
76–207

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

Plugin surface
5 hooks

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

Called by
4

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

What it touches

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

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 · 96 distinct outcomes

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

WhenInstructionsCalls it makes
!$fields76–85::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!wp_attachment_is_image()80–89::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
always83–92::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
always83–92::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), ->get_attachment_filename(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
always83–92::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!wp_attachment_is_image()87–96::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!wp_attachment_is_image()87–96::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), ->get_attachment_filename(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!wp_attachment_is_image()87–96::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
always90–99::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), ->get_attachment_filename(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
always90–99::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
always90–99::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), ->get_attachment_filename(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data)91–100::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
84 further outcomes, up to 207 instructions
wp_attachment_is_image()92–113::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!wp_attachment_is_image()94–103::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!wp_attachment_is_image()94–103::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!wp_attachment_is_image()94–103::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), ->get_attachment_filename(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && !wp_attachment_is_image()95–104::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)96–105::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
always97–106::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), ->get_attachment_filename(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data)98–107::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data)98–107::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filename(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data)98–107::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
wp_attachment_is_image()99–120::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
wp_attachment_is_image()99–120::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), ->get_attachment_filename(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
wp_attachment_is_image()99–120::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()100–109::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!wp_attachment_is_image()101–110::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && !wp_attachment_is_image()102–111::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && !wp_attachment_is_image()102–111::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filename(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && !wp_attachment_is_image()102–111::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)103–112::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)103–112::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filename(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)103–112::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data)105–114::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filename(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data)105–114::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data)105–114::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filename(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
wp_attachment_is_image()106–127::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
wp_attachment_is_image()106–127::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
wp_attachment_is_image()106–127::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), ->get_attachment_filename(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && wp_attachment_is_image()107–128::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()107–116::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()107–116::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filename(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()107–116::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && !wp_attachment_is_image()109–118::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && !wp_attachment_is_image()109–118::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && !wp_attachment_is_image()109–118::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filename(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)110–119::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filename(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)110–119::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)110–119::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filename(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()112–133::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data)112–121::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filename(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
wp_attachment_is_image()113–134::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && wp_attachment_is_image()114–135::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && wp_attachment_is_image()114–135::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filename(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && wp_attachment_is_image()114–135::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()114–123::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()114–123::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()114–123::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filename(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && !wp_attachment_is_image()116–125::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)117–126::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filename(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()119–140::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()119–140::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filename(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()119–140::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && wp_attachment_is_image()121–142::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && wp_attachment_is_image()121–142::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && wp_attachment_is_image()121–142::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filename(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()121–130::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()126–147::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()126–147::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()126–147::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filename(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
!empty($data) && wp_attachment_is_image()128–149::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()133–154::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)148–159::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()152–163::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)155–166::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)155–166::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filename(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)155–166::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()159–170::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()159–170::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filename(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()159–170::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)162–173::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filename(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)162–173::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)162–173::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filename(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()164–187::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()166–177::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()166–177::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()166–177::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filename(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data)169–179::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filename(), ->get_attachment_filesize(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()171–194::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()171–194::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filename(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()171–194::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && !wp_attachment_is_image()173–183::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()178–201::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()178–201::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()178–200::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filename(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()
empty($data) && wp_attachment_is_image()185–207::prepare_item_for_response(), ->get_fields_for_response(), ->get_data(), wp_get_attachment_url(), wp_get_missing_image_subsizes(), array_keys(), get_post_mime_type(), wp_get_attachment_metadata(), remove_filter(), apply_filters(), wp_get_registered_image_subsizes(), array_flip(), array_intersect_key(), array_keys(), array_keys(), array_diff(), array_values(), ->get_attachment_filename(), ->get_attachment_filesize(), wp_attachment_is_image(), wp_get_attachment_metadata(), ->filter_response_by_context(), ->get_links(), rest_ensure_response(), apply_filters()

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-dev35176–20734
8.535176–20734
8.435176–2073436 fewer instructions than PHP 8.3
8.3387112–24334
8.2387112–24334
8.1387112–243342 fewer instructions than PHP 7.4
7.4389112–24534

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 · 5

5 hooks fire while WP_REST_Attachments_Controller::prepare_item_for_response() runs, in this order:

  1. apply_filters( the_content )filterline 920 (+12 into the body)

    Filters the post content.

  2. apply_filters( get_the_excerpt )filterline 926 (+18 into the body)

    Filters the retrieved post excerpt.

  3. apply_filters( the_excerpt )filterline 929 (+21 into the body)

    Filters the displayed post excerpt.

  4. apply_filters( fallback_intermediate_image_sizes )filterline 1021 (+113 into the body)

    Filters the image sizes generated for non-image mime types.

  5. apply_filters( rest_prepare_attachment )filterline 1081 (+173 into the body)

    Filters an attachment returned from the REST API.

Uses · 18

Show all 18

Used by · 4

Source code

	public function prepare_item_for_response( $item, $request ) {		// Restores the more descriptive, specific name for use within this method.		$post = $item; 		$response = parent::prepare_item_for_response( $post, $request );		$fields   = $this->get_fields_for_response( $request );		$data     = $response->get_data(); 		if ( in_array( 'description', $fields, true ) ) {			$data['description'] = array(				'raw'      => $post->post_content,				/** This filter is documented in wp-includes/post-template.php */				'rendered' => apply_filters( 'the_content', $post->post_content ),			);		} 		if ( in_array( 'caption', $fields, true ) ) {			/** This filter is documented in wp-includes/post-template.php */			$caption = apply_filters( 'get_the_excerpt', $post->post_excerpt, $post ); 			/** This filter is documented in wp-includes/post-template.php */			$caption = apply_filters( 'the_excerpt', $caption ); 			$data['caption'] = array(				'raw'      => $post->post_excerpt,				'rendered' => $caption,			);		} 		if ( in_array( 'alt_text', $fields, true ) ) {			$data['alt_text'] = get_post_meta( $post->ID, '_wp_attachment_image_alt', true );		} 		if ( in_array( 'media_type', $fields, true ) ) {			$data['media_type'] = wp_attachment_is_image( $post->ID ) ? 'image' : 'file';		} 		if ( in_array( 'mime_type', $fields, true ) ) {			$data['mime_type'] = $post->post_mime_type;		} 		if ( in_array( 'media_details', $fields, true ) ) {			$data['media_details'] = wp_get_attachment_metadata( $post->ID ); 			// Ensure empty details is an empty object.			if ( empty( $data['media_details'] ) ) {				$data['media_details'] = new stdClass();			} elseif ( ! empty( $data['media_details']['sizes'] ) ) { 				foreach ( $data['media_details']['sizes'] as $size => &$size_data ) { 					if ( isset( $size_data['mime-type'] ) ) {						$size_data['mime_type'] = $size_data['mime-type'];						unset( $size_data['mime-type'] );					} 					// Use the same method image_downsize() does.					$image_src = wp_get_attachment_image_src( $post->ID, $size );					if ( ! $image_src ) {						continue;					} 					$size_data['source_url'] = $image_src[0];				} 				$full_src = wp_get_attachment_image_src( $post->ID, 'full' ); 				if ( ! empty( $full_src ) ) {					$data['media_details']['sizes']['full'] = array(						'file'       => wp_basename( $full_src[0] ),						'width'      => $full_src[1],						'height'     => $full_src[2],						'mime_type'  => $post->post_mime_type,						'source_url' => $full_src[0],					);				}			} else {				$data['media_details']['sizes'] = new stdClass();			}		}

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.

5.9.0
Renamed $post to $item to match parent class for PHP 8 named parameter support.from the docblock
4.7.0
Introduced.from the docblock

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.