WP_REST_Users_Controller::create_item( WP_REST_Request $request ): WP_REST_Response|WP_Error
- Since
- 4.7.0
- Source
wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php:581
Compatibility
- WordPress
- since 4.7.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- Full details about the request.
Return value
WP_REST_Response|WP_Error- Response object on success, or WP_Error object on failure.
Performance profile
How much work a call to WP_REST_Users_Controller::create_item() 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
- Expensive
- Scaling
- Scales with input
- Instructions
- 12–186
- Plugin surface
- 2 hooks
- Called by
- 0
Sends mail via wp_mail().
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 256.
Third-party callbacks on 'rest_insert_user', 'rest_after_insert_user' run inside this call, and their cost is not bounded by anything here.
Nothing in core calls this; the cost is only what you spend yourself.
What it touches
- querycontent query
get_user_by()called directly - hookthird-party callbacks
do_action()called directly - optionnetwork option
get_site_option()one call below WP_REST_Users_Controller::create_item() - mailsends mail
wp_mail()one call below WP_REST_Users_Controller::create_item() - cacheobject cache
wp_cache_delete()one call below WP_REST_Users_Controller::create_item()
Further down the call graph this can also reach 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 · 88 distinct outcomes
One number would be a lie: the work depends on which branch runs. These are every distinct cost WP_REST_Users_Controller::create_item() can have, taken from its control-flow graph on PHP 8.5.
| When | Instructions | Calls it makes |
|---|---|---|
!empty($request) | 12 | __() |
!empty($value) && is_wp_error() | 25 | ->get_item_schema(), ->check_role_update(), is_wp_error() |
empty($request) && !is_multisite() && is_wp_error() | 31–34 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error() |
empty($request) | 40–43 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), __() |
empty($request) && is_wp_error() | 46–49 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error() |
empty($request) | 46–49 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error() |
!empty($value) && !is_multisite() | 47 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error() |
empty($request) && is_multisite() && is_wp_error() && ->has_errors() | 48–52 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), __() |
empty($request) && is_wp_error() && !->has_errors() | 50–53 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error() |
empty($request) && is_multisite() && !is_wp_error() | 55–58 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), __() |
!empty($value) && !is_wp_error() | 56 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), __() |
empty($request) && is_multisite() && is_wp_error() && !->has_errors() | 59–62 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), __() |
76 further outcomes, up to 186 instructions
empty($request) | 60–63 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error() |
empty($request) && is_multisite() | 61–64 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error() |
empty($request) && !is_multisite() && !empty($value) && isset($request) | 61–74 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error() |
empty($request) && !is_multisite() | 61–76 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
!empty($value) | 62 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error() |
!empty($value) | 62 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error() |
!empty($value) && is_multisite() && ->has_errors() | 64–65 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), __() |
empty($request) && is_multisite() && is_wp_error() && !->has_errors() | 65–68 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error() |
!empty($value) && !->has_errors() | 66 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error() |
!empty($value) && !is_wp_error() && is_multisite() | 71 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), __() |
!empty($value) && is_multisite() && !->has_errors() | 75 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), __() |
empty($request) && is_multisite() | 75–78 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error() |
empty($request) && !is_multisite() && !empty($value) && isset($request) | 75–88 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
empty($request) && !empty($value) && isset($request) | 76–89 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error() |
!empty($value) | 76 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error() |
empty($request) | 76–91 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
!empty($value) && is_multisite() | 77 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error() |
!empty($value) && !is_multisite() && isset($request) | 77–87 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error() |
!empty($value) && !is_multisite() | 77–89 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
empty($request) && is_multisite() && !->has_errors() | 79–82 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error() |
empty($request) && !->has_errors() && !empty($value) && isset($request) | 80–93 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error() |
empty($request) && !->has_errors() | 80–95 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
!empty($value) && is_multisite() && !->has_errors() | 81 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error() |
empty($request) && !empty($value) && isset($request) | 90–103 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error() |
empty($request) | 90–105 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
empty($request) && !empty($value) && isset($request) | 90–103 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
!empty($value) && is_multisite() | 91 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error() |
!empty($value) && !is_multisite() && isset($request) | 91–101 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
!empty($value) && isset($request) | 92–102 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error() |
!empty($value) | 92–104 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
empty($request) && !->has_errors() && !empty($value) && isset($request) | 94–107 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
!empty($value) && is_multisite() && !->has_errors() | 95 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error() |
!empty($value) && !->has_errors() && isset($request) | 96–106 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error() |
!empty($value) && !->has_errors() | 96–108 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
empty($request) && !is_multisite() && !is_wp_error() | 98–113 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
empty($request) && !empty($value) && isset($request) | 104–117 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
empty($request) && is_multisite() && !empty($value) && isset($request) | 105–118 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error() |
empty($request) && is_multisite() | 105–120 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
!empty($value) && isset($request) | 106–116 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error() |
!empty($value) | 106–118 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
!empty($value) && isset($request) | 106–116 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
empty($request) && is_multisite() && !->has_errors() && !empty($value) && isset($request) | 109–122 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error() |
empty($request) && is_multisite() && !->has_errors() | 109–124 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
!empty($value) && !->has_errors() && isset($request) | 110–120 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
empty($request) && !is_multisite() && !is_wp_error() && !empty($value) && isset($request) | 112–125 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
empty($request) && !is_wp_error() | 113–128 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
!empty($value) && !is_wp_error() && !is_multisite() | 114–126 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
empty($request) && !->has_errors() | 117–132 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
empty($request) && is_multisite() && !empty($value) && isset($request) | 119–132 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
!empty($value) && isset($request) | 120–130 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
!empty($value) && is_multisite() && isset($request) | 121–131 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error() |
!empty($value) && is_multisite() | 121–133 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
empty($request) && is_multisite() && !->has_errors() && !empty($value) && isset($request) | 123–136 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
!empty($value) && is_multisite() && !->has_errors() && isset($request) | 125–135 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error() |
!empty($value) && is_multisite() && !->has_errors() | 125–137 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
empty($request) && !is_wp_error() | 127–142 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
empty($request) && !is_wp_error() && !empty($value) && isset($request) | 127–140 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
!empty($value) && !is_wp_error() && !is_multisite() && isset($request) | 128–138 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
!empty($value) && !is_wp_error() | 129–141 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
empty($request) && !->has_errors() && !empty($value) && isset($request) | 131–144 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
!empty($value) && !->has_errors() | 133–145 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
!empty($value) && is_multisite() && isset($request) | 135–145 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
!empty($value) && is_multisite() && !->has_errors() && isset($request) | 139–149 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error() |
empty($request) && !is_wp_error() && !empty($value) && isset($request) | 141–154 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
empty($request) && is_multisite() && !is_wp_error() | 142–157 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
!empty($value) && !is_wp_error() | 143–155 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
!empty($value) && !is_wp_error() && isset($request) | 143–153 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
empty($request) && is_multisite() && !->has_errors() | 146–161 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
!empty($value) && !->has_errors() && isset($request) | 147–157 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wp_slash(), wp_insert_user(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
empty($request) && is_multisite() && !is_wp_error() && !empty($value) && isset($request) | 156–169 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
!empty($value) && !is_wp_error() && isset($request) | 157–167 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
!empty($value) && !is_wp_error() && is_multisite() | 158–170 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
empty($request) && is_multisite() && !->has_errors() && !empty($value) && isset($request) | 160–173 | ->get_item_schema(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
!empty($value) && is_multisite() && !->has_errors() | 162–174 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
!empty($value) && !is_wp_error() && is_multisite() && isset($request) | 172–182 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
!empty($value) && is_multisite() && !->has_errors() && isset($request) | 176–186 | ->get_item_schema(), ->check_role_update(), is_wp_error(), ->prepare_item_for_database(), is_multisite(), wpmu_validate_user_signup(), is_wp_error(), ->has_errors(), is_multisite(), wpmu_create_user(), wp_slash(), wp_update_user(), is_wp_error(), get_site(), add_user_to_blog(), is_wp_error(), get_user_by(), do_action(), ->update_value(), is_wp_error(), get_user_by(), ->update_additional_fields_for_object(), is_wp_error(), ->set_param(), do_action(), ->prepare_item_for_response(), rest_ensure_response(), ->set_status(), rest_url(), ->header() |
Across PHP versions
| PHP | Compiled | Executed | Branches | Notes |
|---|---|---|---|---|
| 8.6-dev | 256 | 12–186 | 23 | |
| 8.5 | 256 | 12–186 | 23 | |
| 8.4 | 256 | 12–186 | 23 | |
| 8.3 | 256 | 12–186 | 23 | |
| 8.2 | 256 | 12–186 | 23 | |
| 8.1 | 256 | 12–186 | 23 | 1 fewer instruction than PHP 7.4 |
| 7.4 | 257 | 12–187 | 23 |
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_Users_Controller::create_item() runs, in this order:
- do_action( rest_insert_user )actionline 668 (+87 into the body)
Fires immediately after a user is created or updated via the REST API.
- do_action( rest_after_insert_user )actionline 700 (+119 into the body)
Fires after a user is completely created or updated via the REST API.
Uses · 20
- __()Retrieves the translation of $text.
- is_wp_error()Checks whether the given variable is a WordPress Error.
- is_multisite()Determines whether Multisite is enabled.
- wpmu_validate_user_signup()Sanitizes and validates data required for a user sign-up.
- wpmu_create_user()Creates a user.
- wp_update_user()Updates a user in the database.
- wp_slash()Adds slashes to a string or recursively adds slashes to strings within an array.
- add_user_to_blog()Adds a user to a blog, along with specifying the user's role.
- get_site()Retrieves site data given a site ID or site object.
- wp_insert_user()Inserts a user into the database.
- get_user_by()Retrieves user info by a given field.
- do_action()Calls the callback functions that have been added to an action hook.
Show all 20
- rest_ensure_response()Ensures a REST response is a response object (for consistency).
- rest_url()Retrieves the URL to a REST endpoint.
- WP_Error::__construct()Initializes the error.
- WP_REST_Users_Controller::get_item_schema()Retrieves the user's schema, conforming to JSON Schema.
- WP_REST_Users_Controller::check_role_update()Determines if the current user is allowed to make the desired roles change.
- WP_REST_Users_Controller::prepare_item_for_database()Prepares a single user for creation or update.
- WP_REST_Users_Controller::update_additional_fields_for_object()
- WP_REST_Users_Controller::prepare_item_for_response()Prepares a single user output for response.
Source code
public function create_item( $request ) { if ( ! empty( $request['id'] ) ) { return new WP_Error( 'rest_user_exists', __( 'Cannot create existing user.' ), array( 'status' => 400 ) ); } $schema = $this->get_item_schema(); if ( ! empty( $request['roles'] ) && ! empty( $schema['properties']['roles'] ) ) { $check_permission = $this->check_role_update( $request['id'], $request['roles'] ); if ( is_wp_error( $check_permission ) ) { return $check_permission; } } $user = $this->prepare_item_for_database( $request ); if ( is_multisite() ) { $ret = wpmu_validate_user_signup( $user->user_login, $user->user_email ); if ( is_wp_error( $ret['errors'] ) && $ret['errors']->has_errors() ) { $error = new WP_Error( 'rest_invalid_param', __( 'Invalid user parameter(s).' ), array( 'status' => 400 ) ); foreach ( $ret['errors']->errors as $code => $messages ) { foreach ( $messages as $message ) { $error->add( $code, $message ); } $error_data = $error->get_error_data( $code ); if ( $error_data ) { $error->add_data( $error_data, $code ); } } return $error; } } if ( is_multisite() ) { $user_id = wpmu_create_user( $user->user_login, $user->user_pass, $user->user_email ); if ( ! $user_id ) { return new WP_Error( 'rest_user_create', __( 'Error creating new user.' ), array( 'status' => 500 ) ); } $user->ID = $user_id; $user_id = wp_update_user( wp_slash( (array) $user ) ); if ( is_wp_error( $user_id ) ) { return $user_id; } $result = add_user_to_blog( get_site()->id, $user_id, '' ); if ( is_wp_error( $result ) ) { return $result; } } else { $user_id = wp_insert_user( wp_slash( (array) $user ) ); if ( is_wp_error( $user_id ) ) { return $user_id; } } $user = get_user_by( 'id', $user_id ); /** * Fires immediately after a user is created or updated via the REST API.Changelog
Introduced in 4.7.0. Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
About this page
- Parsed data
- Generated from the wordpress-develop 7.0.4 tag, from
src/wp-includes/rest-api/endpoints/class-wp-rest-users-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.