wppaste
WordPress

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

Since
5.9.0
Source
wp-includes/rest-api/endpoints/class-wp-rest-menu-items-controller.php:508
Prepares a single nav menu item 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
Post object.
$requestWP_REST_Request
Request object.

Return value

WP_REST_Response
Response object.

Performance profile

How much work a call to WP_REST_Menu_Items_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
156–217

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

Plugin surface
2 hooks

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

Called by
3

3 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_Menu_Items_Controller::prepare_item_for_response()
  • cacheobject cachewp_cache_add()one call below WP_REST_Menu_Items_Controller::prepare_item_for_response()

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

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

WhenInstructionsCalls it makes
!rest_is_field_included()156–177->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), apply_filters()
empty($value)161–182->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
always163–173->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), apply_filters()
always165–186->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), apply_filters()
empty($value)166–187->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
always167–188->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), apply_filters()
empty($value)168–178->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
!empty($value)170–192->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
empty($value)170–191->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
always172–182->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), apply_filters()
empty($value)172–193->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
empty($value)173–183->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
28 further outcomes, up to 209 instructions
always174–183->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), apply_filters()
!empty($value)175–197->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
empty($value)175–196->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
always176–197->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), apply_filters()
!empty($value)177–188->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
empty($value)177–187->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
empty($value)177–198->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
!empty($value)179–201->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
empty($value)179–189->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
!empty($value)181–203->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
empty($value)181–202->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
!empty($value)182–193->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
empty($value)182–192->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
always183–189->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), apply_filters()
!empty($value)184–206->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
empty($value)184–193->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
!empty($value)186–197->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
!empty($value)186–208->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
empty($value)186–207->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
!empty($value)188–199->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
empty($value)188–194->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
!empty($value)190–212->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
!empty($value)191–202->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
!empty($value)193–203->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
empty($value)193–199->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), apply_filters()
!empty($value)195–217->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
!empty($value)197–204->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), apply_filters()
!empty($value)202–209->get_fields_for_response(), ->get_nav_menu_item(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), absint(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), rest_is_field_included(), explode(), array_map(), rest_is_field_included(), rest_is_field_included(), ->get_value(), get_object_taxonomies(), wp_list_filter(), ->add_additional_fields_to_object(), ->filter_response_by_context(), rest_ensure_response(), rest_is_field_included(), rest_is_field_included(), ->prepare_links(), ->add_links(), ->get_available_actions(), 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-dev347156–217332 fewer instructions than PHP 8.5
8.5349156–21733
8.4349156–21733
8.3349156–21733
8.2349156–21733
8.1349156–217333 fewer instructions than PHP 7.4
7.4352156–21833

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

2 hooks fire while WP_REST_Menu_Items_Controller::prepare_item_for_response() runs, in this order:

  1. apply_filters( the_title )filterline 531 (+23 into the body)

    Filters the post title.

  2. apply_filters( rest_prepare_nav_menu_item )filterline 654 (+146 into the body)

    Filters the menu item data for a REST API response.

Uses · 16

  • rest_is_field_included()Given an array of fields to include in a response, some of which may be `nested.fields`, determine whether the provided field should be included in the response body.
  • add_filter()Adds a callback function to a filter hook.
  • apply_filters()Calls the callback functions that have been added to a filter hook.
  • remove_filter()Removes a callback function from a filter hook.
  • absint()Converts a value to non-negative integer.
  • wp_list_filter()Filters a list of objects, based on a set of key => value arguments.
  • get_object_taxonomies()Returns the names or objects of the taxonomies which are registered for the requested object or object type, such as a post object or post type name.
  • get_the_terms()Retrieves the terms of the taxonomy that are attached to the post.
  • wp_list_pluck()Plucks a certain field out of each object or array in an array.
  • rest_ensure_response()Ensures a REST response is a response object (for consistency).
  • WP_REST_Menu_Items_Controller::get_fields_for_response()
  • WP_REST_Menu_Items_Controller::get_nav_menu_item()Gets the nav menu item, if the ID is valid.
Show all 16
  • WP_REST_Menu_Items_Controller::add_additional_fields_to_object()
  • WP_REST_Menu_Items_Controller::filter_response_by_context()
  • WP_REST_Menu_Items_Controller::prepare_links()Prepares links for the request.
  • WP_REST_Menu_Items_Controller::get_available_actions()

Used by · 3

Source code

	public function prepare_item_for_response( $item, $request ) {		// Base fields for every post.		$fields    = $this->get_fields_for_response( $request );		$menu_item = $this->get_nav_menu_item( $item->ID );		$data      = array(); 		if ( rest_is_field_included( 'id', $fields ) ) {			$data['id'] = $menu_item->ID;		} 		if ( rest_is_field_included( 'title', $fields ) ) {			$data['title'] = array();		} 		if ( rest_is_field_included( 'title.raw', $fields ) ) {			$data['title']['raw'] = $menu_item->title;		} 		if ( rest_is_field_included( 'title.rendered', $fields ) ) {			add_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );			add_filter( 'private_title_format', array( $this, 'protected_title_format' ) ); 			/** This filter is documented in wp-includes/post-template.php */			$title = apply_filters( 'the_title', $menu_item->title, $menu_item->ID ); 			$data['title']['rendered'] = $title; 			remove_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );			remove_filter( 'private_title_format', array( $this, 'protected_title_format' ) );		} 		if ( rest_is_field_included( 'status', $fields ) ) {			$data['status'] = $menu_item->post_status;		} 		if ( rest_is_field_included( 'url', $fields ) ) {			$data['url'] = $menu_item->url;		} 		if ( rest_is_field_included( 'attr_title', $fields ) ) {			// Same as post_excerpt.			$data['attr_title'] = $menu_item->attr_title;		} 		if ( rest_is_field_included( 'description', $fields ) ) {			// Same as post_content.			$data['description'] = $menu_item->description;		} 		if ( rest_is_field_included( 'type', $fields ) ) {			$data['type'] = $menu_item->type;		} 		if ( rest_is_field_included( 'type_label', $fields ) ) {			$data['type_label'] = $menu_item->type_label;		} 		if ( rest_is_field_included( 'object', $fields ) ) {			$data['object'] = $menu_item->object;		} 		if ( rest_is_field_included( 'object_id', $fields ) ) {			// It is stored as a string, but should be exposed as an integer.			$data['object_id'] = absint( $menu_item->object_id );		} 		if ( rest_is_field_included( 'parent', $fields ) ) {			// Same as post_parent, exposed as an integer.			$data['parent'] = (int) $menu_item->menu_item_parent;		} 		if ( rest_is_field_included( 'menu_order', $fields ) ) {			// Same as post_parent, exposed as an integer.			$data['menu_order'] = (int) $menu_item->menu_order;		} 		if ( rest_is_field_included( 'target', $fields ) ) {			$data['target'] = $menu_item->target;		}

Changelog

Introduced in 5.9.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.1.0 tag, from src/wp-includes/rest-api/endpoints/class-wp-rest-menu-items-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.