wppaste
WordPress

WP_REST_Menu_Items_Controller::prepare_item_for_database( WP_REST_Request $request ): object|WP_Error

Since
5.9.0
Source
wp-includes/rest-api/endpoints/class-wp-rest-menu-items-controller.php:343
Prepares a single nav menu item for create or update.

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

$requestWP_REST_Request
Request object.

Return value

object|WP_Error

Performance profile

How much work a call to WP_REST_Menu_Items_Controller::prepare_item_for_database() 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_term().

Scaling
Scales with input

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

Instructions
44–137

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

Plugin surface
1 hook

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

Called by
2

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

What it touches

  • querycontent queryget_term()called directly
  • hookthird-party callbacksapply_filters()called directly

Further down the call graph this can also reach option, 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 · 84 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_database() can have, taken from its control-flow graph on PHP 8.5.

WhenInstructionsCalls it makes
is_wp_error() && empty($taxonomy) && empty($request[$base]) && ->has_errors()44–67->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && ->has_errors()53–77->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), get_post_type_object(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !->has_errors()56–82->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && ->has_errors()57–75->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && ->has_errors()61–85->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), get_post_type_object(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !->has_errors()65–92->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), get_post_type_object(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && empty($prepared_nav_item) && ->has_errors()65–83->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()66–83->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), get_post_type(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && ->has_errors()67–84->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !->has_errors()69–90->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), __(), ->add(), ->has_errors(), apply_filters()
empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()69–86->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), get_term_field(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && ->has_errors()70–87->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), __(), ->add(), ->has_errors()
72 further outcomes, up to 137 instructions
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()71–88->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !->has_errors()73–100->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), get_post_type_object(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && ->has_errors()74–93->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), get_post_type_object(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()75–93->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), get_post_type(), get_post_type_object(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && ->has_errors()76–94->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), __(), ->add(), get_post_type_object(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && empty($prepared_nav_item) && !->has_errors()77–98->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()78–98->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), get_post_type(), ->has_errors(), apply_filters()
empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()78–96->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), get_term_field(), get_post_type_object(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()79–91->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), get_post_type(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && ->has_errors()79–97->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), __(), ->add(), get_post_type_object(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && !->has_errors()79–99->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && ->has_errors()80–92->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()80–98->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), __(), ->add(), get_post_type_object(), ->has_errors()
empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()81–101->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), get_term_field(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && !->has_errors()82–102->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), __(), ->add(), ->has_errors(), apply_filters()
empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()82–94->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), get_term_field(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && empty($prepared_nav_item) && ->has_errors()82–101->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), get_post_type_object(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()83–101->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), get_post_type(), get_post_type_object(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && ->has_errors()83–95->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()83–103->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && ->has_errors()84–102->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), __(), ->add(), get_post_type_object(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()84–96->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !->has_errors()86–108->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), get_post_type_object(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()86–104->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), get_term_field(), get_post_type_object(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()87–108->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), get_post_type(), get_post_type_object(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && empty($prepared_nav_item) && ->has_errors()87–99->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), get_post_type(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && ->has_errors()87–105->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), __(), ->add(), get_post_type_object(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && !->has_errors()88–109->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), __(), ->add(), get_post_type_object(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && empty($prepared_nav_item) && ->has_errors()88–100->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()88–106->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), __(), ->add(), get_post_type_object(), __(), ->add(), ->has_errors()
empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()90–111->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), get_term_field(), get_post_type_object(), ->has_errors(), apply_filters()
empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && empty($prepared_nav_item) && ->has_errors()90–102->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), get_term_field(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()91–106->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), get_post_type(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && !->has_errors()91–112->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), __(), ->add(), get_post_type_object(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && empty($prepared_nav_item) && ->has_errors()91–103->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && !->has_errors()92–107->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()92–113->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), __(), ->add(), get_post_type_object(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && empty($prepared_nav_item) && ->has_errors()92–104->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors()
empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()94–109->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), get_term_field(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && empty($prepared_nav_item) && !->has_errors()94–116->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), get_post_type_object(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()95–116->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), get_post_type(), get_post_type_object(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && !->has_errors()95–110->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()96–109->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), get_post_type(), get_post_type_object(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && !->has_errors()96–117->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), __(), ->add(), get_post_type_object(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()96–111->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && ->has_errors()97–110->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), __(), ->add(), get_post_type_object(), __(), ->add(), __(), ->add(), ->has_errors()
empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()98–119->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), get_term_field(), get_post_type_object(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && empty($prepared_nav_item) && !->has_errors()99–114->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), get_post_type(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && !->has_errors()99–120->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), __(), ->add(), get_post_type_object(), __(), ->add(), ->has_errors(), apply_filters()
empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()99–112->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), get_term_field(), get_post_type_object(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && ->has_errors()100–113->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), __(), ->add(), get_post_type_object(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && empty($prepared_nav_item) && !->has_errors()100–115->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()100–121->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), __(), ->add(), get_post_type_object(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && ->has_errors()101–114->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), __(), ->add(), get_post_type_object(), __(), ->add(), __(), ->add(), ->has_errors()
empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && empty($prepared_nav_item) && !->has_errors()102–117->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), get_term_field(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && empty($prepared_nav_item) && !->has_errors()103–118->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && empty($prepared_nav_item) && ->has_errors()104–117->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), get_post_type(), get_post_type_object(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && empty($prepared_nav_item) && !->has_errors()104–119->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && empty($prepared_nav_item) && ->has_errors()105–118->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), __(), ->add(), get_post_type_object(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors()
empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && empty($prepared_nav_item) && ->has_errors()107–120->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), get_term_field(), get_post_type_object(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()108–124->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), get_post_type(), get_post_type_object(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && empty($prepared_nav_item) && ->has_errors()108–121->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), __(), ->add(), get_post_type_object(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && !->has_errors()109–125->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), __(), ->add(), get_post_type_object(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && empty($prepared_nav_item) && ->has_errors()109–122->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), __(), ->add(), get_post_type_object(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors()
empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()111–127->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), get_term_field(), get_post_type_object(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && !->has_errors()112–128->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), __(), ->add(), get_post_type_object(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && !->has_errors()113–129->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), __(), ->add(), get_post_type_object(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && empty($prepared_nav_item) && !->has_errors()116–132->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), get_post_type(), get_post_type_object(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && empty($prepared_nav_item) && !->has_errors()117–133->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), __(), ->add(), get_post_type_object(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && empty($prepared_nav_item) && !->has_errors()119–135->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), get_term_field(), get_post_type_object(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && empty($original) && empty($prepared_nav_item) && !->has_errors()120–136->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_post(), __(), ->add(), get_post_type_object(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors(), apply_filters()
is_wp_error() && empty($taxonomy) && empty($request[$base]) && !$prepared_nav_item && !empty($original) && empty($prepared_nav_item) && !->has_errors()121–137->get_nav_menu_item(), is_wp_error(), ->get_item_schema(), get_taxonomy(), menu-item-db-id(), absint(), get_term(), is_wp_error(), __(), ->add(), get_post_type_object(), __(), ->add(), __(), ->add(), __(), ->add(), ->has_errors(), 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-dev24344–13727
8.524344–13727
8.424344–137273 fewer instructions than PHP 8.3
8.324644–13727
8.224644–13727
8.124644–137274 fewer instructions than PHP 7.4
7.425045–13927

An instruction is not a fixed amount of time, so a matching count is not necessarily the same speed; what it rules out is a difference in the work itself.

Hooks and filters fired · 1

One hook fires while WP_REST_Menu_Items_Controller::prepare_item_for_database() runs, in this order:

  1. apply_filters( rest_pre_insert_nav_menu_item )filterline 496 (+153 into the body)

    Filters a menu item before it is inserted via the REST API.

Uses · 14

Show all 14

Used by · 2

Source code

	protected function prepare_item_for_database( $request ) {		$menu_item_db_id = $request['id'];		$menu_item_obj   = $this->get_nav_menu_item( $menu_item_db_id );		// Need to persist the menu item data. See https://core.trac.wordpress.org/ticket/28138		if ( ! is_wp_error( $menu_item_obj ) ) {			// Correct the menu position if this was the first item. See https://core.trac.wordpress.org/ticket/28140			$position = ( 0 === $menu_item_obj->menu_order ) ? 1 : $menu_item_obj->menu_order; 			$prepared_nav_item = array(				'menu-item-db-id'       => $menu_item_db_id,				'menu-item-object-id'   => $menu_item_obj->object_id,				'menu-item-object'      => $menu_item_obj->object,				'menu-item-parent-id'   => $menu_item_obj->menu_item_parent,				'menu-item-position'    => $position,				'menu-item-type'        => $menu_item_obj->type,				'menu-item-title'       => $menu_item_obj->title,				'menu-item-url'         => $menu_item_obj->url,				'menu-item-description' => $menu_item_obj->description,				'menu-item-attr-title'  => $menu_item_obj->attr_title,				'menu-item-target'      => $menu_item_obj->target,				'menu-item-classes'     => $menu_item_obj->classes,				// Stored in the database as a string.				'menu-item-xfn'         => explode( ' ', $menu_item_obj->xfn ),				'menu-item-status'      => $menu_item_obj->post_status,				'menu-id'               => $this->get_menu_id( $menu_item_db_id ),			);		} else {			$prepared_nav_item = array(				'menu-id'               => 0,				'menu-item-db-id'       => 0,				'menu-item-object-id'   => 0,				'menu-item-object'      => '',				'menu-item-parent-id'   => 0,				'menu-item-position'    => 1,				'menu-item-type'        => 'custom',				'menu-item-title'       => '',				'menu-item-url'         => '',				'menu-item-description' => '',				'menu-item-attr-title'  => '',				'menu-item-target'      => '',				'menu-item-classes'     => array(),				'menu-item-xfn'         => array(),				'menu-item-status'      => 'publish',			);		} 		$mapping = array(			'menu-item-db-id'       => 'id',			'menu-item-object-id'   => 'object_id',			'menu-item-object'      => 'object',			'menu-item-parent-id'   => 'parent',			'menu-item-position'    => 'menu_order',			'menu-item-type'        => 'type',			'menu-item-url'         => 'url',			'menu-item-description' => 'description',			'menu-item-attr-title'  => 'attr_title',			'menu-item-target'      => 'target',			'menu-item-classes'     => 'classes',			'menu-item-xfn'         => 'xfn',			'menu-item-status'      => 'status',		); 		$schema = $this->get_item_schema(); 		foreach ( $mapping as $original => $api_request ) {			if ( isset( $request[ $api_request ] ) ) {				$prepared_nav_item[ $original ] = $request[ $api_request ];			}		} 		$taxonomy = get_taxonomy( 'nav_menu' );		$base     = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name;		// If menus submitted, cast to int.		if ( ! empty( $request[ $base ] ) ) {			$prepared_nav_item['menu-id'] = absint( $request[ $base ] );		} 		// Nav menu title.		if ( ! empty( $schema['properties']['title'] ) && isset( $request['title'] ) ) {			if ( is_string( $request['title'] ) ) {

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 6.9.7 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.