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
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
- Scaling
- Scales with input
- Instructions
- 76–207
- Plugin surface
- 5 hooks
- Called by
- 4
Reaches the database via get_post().
The body loops, so the work grows with what you pass in.
Executed per call on PHP 8.5, depending on the branch taken. The body compiles to 351.
Third-party callbacks on 'the_content', 'get_the_excerpt', 'the_excerpt' run inside this call, and their cost is not bounded by anything here.
4 places in core call this, so the cost is paid more often than your own code shows.
What it touches
- hookthird-party callbacks
apply_filters()called directly - querycontent query
get_post()one call below WP_REST_Attachments_Controller::prepare_item_for_response() - optionoption read or write
get_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.
| When | Instructions | Calls it makes |
|---|---|---|
!$fields | 76–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() |
| always | 83–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() |
| always | 83–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() |
| always | 83–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() |
| always | 90–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() |
| always | 90–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() |
| always | 90–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() |
| always | 97–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
| PHP | Compiled | Executed | Branches | Notes |
|---|---|---|---|---|
| 8.6-dev | 351 | 76–207 | 34 | |
| 8.5 | 351 | 76–207 | 34 | |
| 8.4 | 351 | 76–207 | 34 | 36 fewer instructions than PHP 8.3 |
| 8.3 | 387 | 112–243 | 34 | |
| 8.2 | 387 | 112–243 | 34 | |
| 8.1 | 387 | 112–243 | 34 | 2 fewer instructions than PHP 7.4 |
| 7.4 | 389 | 112–245 | 34 |
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:
- apply_filters( get_the_excerpt )filterline 926 (+18 into the body)
Filters the retrieved post excerpt.
- apply_filters( fallback_intermediate_image_sizes )filterline 1021 (+113 into the body)
Filters the image sizes generated for non-image mime types.
- apply_filters( rest_prepare_attachment )filterline 1081 (+173 into the body)
Filters an attachment returned from the REST API.
Uses · 18
- apply_filters()Calls the callback functions that have been added to a filter hook.
- get_post_meta()Retrieves a post meta field for the given post ID.
- wp_attachment_is_image()Determines whether an attachment is an image.
- wp_get_attachment_metadata()Retrieves attachment metadata for attachment ID.
- wp_get_attachment_image_src()Retrieves an image to represent an attachment.
- wp_basename()i18n-friendly version of basename().
- wp_get_attachment_url()Retrieves the URL for an attachment.
- wp_get_missing_image_subsizes()Compare the existing image sub-sizes (as saved in the attachment meta) to the currently registered image sub-sizes, and return the difference.
- get_post_mime_type()Retrieves the mime type of an attachment based on the ID.
- remove_filter()Removes a callback function from a filter hook.
- wp_get_registered_image_subsizes()Returns a normalized list of all currently registered image sub-sizes.
- rest_ensure_response()Ensures a REST response is a response object (for consistency).
Show all 18
- WP_REST_Posts_Controller::prepare_item_for_response()Prepares a single post output for response.
- WP_REST_Attachments_Controller::get_fields_for_response()
- stdClass::__construct()
- WP_REST_Attachments_Controller::get_attachment_filename()Gets the attachment's original file name.
- WP_REST_Attachments_Controller::get_attachment_filesize()Gets the attachment's file size in bytes.
- WP_REST_Attachments_Controller::filter_response_by_context()
Used by · 4
- WP_REST_Attachments_Controller::create_item()Creates a single attachment.
- WP_REST_Attachments_Controller::edit_media_item()Applies edits to a media item and creates a new attachment record.
- WP_REST_Attachments_Controller::post_process_item()Performs post-processing on an attachment.
- WP_REST_Attachments_Controller::update_item()Updates a single attachment.
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.
Signature, return type and hooks compared across 5 parsed releases.
$post to $item to match parent class for PHP 8 named parameter support.from the docblockAbout 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.