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
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
- Scaling
- Scales with input
- Instructions
- 44–137
- Plugin surface
- 1 hook
- Called by
- 2
Reaches the database via get_term().
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 243.
Third-party callbacks on 'rest_pre_insert_nav_menu_item' run inside this call, and their cost is not bounded by anything here.
2 places in core call this, so the cost is paid more often than your own code shows.
What it touches
- querycontent query
get_term()called directly - hookthird-party callbacks
apply_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.
| When | Instructions | Calls 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
| PHP | Compiled | Executed | Branches | Notes |
|---|---|---|---|---|
| 8.6-dev | 243 | 44–137 | 27 | |
| 8.5 | 243 | 44–137 | 27 | |
| 8.4 | 243 | 44–137 | 27 | 3 fewer instructions than PHP 8.3 |
| 8.3 | 246 | 44–137 | 27 | |
| 8.2 | 246 | 44–137 | 27 | |
| 8.1 | 246 | 44–137 | 27 | 4 fewer instructions than PHP 7.4 |
| 7.4 | 250 | 45–139 | 27 |
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:
- 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
- is_wp_error()Checks whether the given variable is a WordPress Error.
- get_taxonomy()Retrieves the taxonomy object of $taxonomy.
- absint()Converts a value to non-negative integer.
- get_term()Gets all term data from database by term ID.
- __()Retrieves the translation of $text.
- get_term_field()Gets sanitized term field.
- get_post()Retrieves post data given a post ID or post object.
- get_post_type()Retrieves the post type of the current post or of a given post.
- get_post_type_object()Retrieves a post type object by name.
- apply_filters()Calls the callback functions that have been added to a filter hook.
- WP_REST_Menu_Items_Controller::get_nav_menu_item()Gets the nav menu item, if the ID is valid.
- WP_REST_Menu_Items_Controller::get_menu_id()Gets the id of the menu that the given menu item belongs to.
Show all 14
- WP_REST_Menu_Items_Controller::get_item_schema()Retrieves the nav menu item's schema, conforming to JSON Schema.
- WP_Error::__construct()Initializes the error.
Used by · 2
- WP_REST_Menu_Items_Controller::create_item()Creates a single nav menu item.
- WP_REST_Menu_Items_Controller::update_item()Updates a single nav menu item.
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.
Signature, return type and hooks compared across 5 parsed releases.
About this page
- Parsed data
- Generated from the wordpress-develop 6.8.8 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.