wppaste
WordPress

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
Creates a single user.

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

Sends mail via wp_mail().

Scaling
Scales with input

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

Instructions
12–186

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

Plugin surface
2 hooks

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

Called by
0

Nothing in core calls this; the cost is only what you spend yourself.

What it touches

  • querycontent queryget_user_by()called directly
  • hookthird-party callbacksdo_action()called directly
  • optionnetwork optionget_site_option()one call below WP_REST_Users_Controller::create_item()
  • mailsends mailwp_mail()one call below WP_REST_Users_Controller::create_item()
  • cacheobject cachewp_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.

WhenInstructionsCalls 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

PHPCompiledExecutedBranchesNotes
8.6-dev25612–18623
8.525612–18623
8.425612–18623
8.325612–18623
8.225612–18623
8.125612–186231 fewer instruction than PHP 7.4
7.425712–18723

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:

  1. do_action( rest_insert_user )actionline 668 (+87 into the body)

    Fires immediately after a user is created or updated via the REST API.

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

Show all 20

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.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 7.1.0 tag, from src/wp-includes/rest-api/endpoints/class-wp-rest-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.