wp_ajax_autocomplete_user

The timeline below displays how wordpress function wp_ajax_autocomplete_user has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.3

/**
 * Handles user autocomplete via AJAX.
 *
 * @since 3.4.0
 */
function wp_ajax_autocomplete_user()
{
    if (!is_multisite() || !current_user_can('promote_users') || wp_is_large_network('users')) {
        wp_die(-1);
    }
    /** This filter is documented in wp-admin/user-new.php */
    if (!current_user_can('manage_network_users') && !apply_filters('autocomplete_users_for_site_admins', false)) {
        wp_die(-1);
    }
    $return = array();
    /*
     * Check the type of request.
     * Current allowed values are `add` and `search`.
     */
    if (isset($_REQUEST['autocomplete_type']) && 'search' === $_REQUEST['autocomplete_type']) {
        $type = $_REQUEST['autocomplete_type'];
    } else {
        $type = 'add';
    }
    /*
     * Check the desired field for value.
     * Current allowed values are `user_email` and `user_login`.
     */
    if (isset($_REQUEST['autocomplete_field']) && 'user_email' === $_REQUEST['autocomplete_field']) {
        $field = $_REQUEST['autocomplete_field'];
    } else {
        $field = 'user_login';
    }
    // Exclude current users of this blog.
    if (isset($_REQUEST['site_id'])) {
        $id = absint($_REQUEST['site_id']);
    } else {
        $id = get_current_blog_id();
    }
    $include_blog_users = ('search' === $type) ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $exclude_blog_users = ('add' === $type) ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $users = get_users(array('blog_id' => false, 'search' => '*' . $_REQUEST['term'] . '*', 'include' => $include_blog_users, 'exclude' => $exclude_blog_users, 'search_columns' => array('user_login', 'user_nicename', 'user_email')));
    foreach ($users as $user) {
        $return[] = array(
            /* translators: 1: User login, 2: User email address. */
            'label' => sprintf(_x('%1$s (%2$s)', 'user autocomplete result'), $user->user_login, $user->user_email),
            'value' => $user->{$field},
        );
    }
    wp_die(wp_json_encode($return));
}

WordPress Version: 5.4

/**
 * Ajax handler for user autocomplete.
 *
 * @since 3.4.0
 */
function wp_ajax_autocomplete_user()
{
    if (!is_multisite() || !current_user_can('promote_users') || wp_is_large_network('users')) {
        wp_die(-1);
    }
    /** This filter is documented in wp-admin/user-new.php */
    if (!current_user_can('manage_network_users') && !apply_filters('autocomplete_users_for_site_admins', false)) {
        wp_die(-1);
    }
    $return = array();
    // Check the type of request.
    // Current allowed values are `add` and `search`.
    if (isset($_REQUEST['autocomplete_type']) && 'search' === $_REQUEST['autocomplete_type']) {
        $type = $_REQUEST['autocomplete_type'];
    } else {
        $type = 'add';
    }
    // Check the desired field for value.
    // Current allowed values are `user_email` and `user_login`.
    if (isset($_REQUEST['autocomplete_field']) && 'user_email' === $_REQUEST['autocomplete_field']) {
        $field = $_REQUEST['autocomplete_field'];
    } else {
        $field = 'user_login';
    }
    // Exclude current users of this blog.
    if (isset($_REQUEST['site_id'])) {
        $id = absint($_REQUEST['site_id']);
    } else {
        $id = get_current_blog_id();
    }
    $include_blog_users = ('search' === $type) ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $exclude_blog_users = ('add' === $type) ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $users = get_users(array('blog_id' => false, 'search' => '*' . $_REQUEST['term'] . '*', 'include' => $include_blog_users, 'exclude' => $exclude_blog_users, 'search_columns' => array('user_login', 'user_nicename', 'user_email')));
    foreach ($users as $user) {
        $return[] = array(
            /* translators: 1: User login, 2: User email address. */
            'label' => sprintf(_x('%1$s (%2$s)', 'user autocomplete result'), $user->user_login, $user->user_email),
            'value' => $user->{$field},
        );
    }
    wp_die(wp_json_encode($return));
}

WordPress Version: 5.3

/**
 * Ajax handler for user autocomplete.
 *
 * @since 3.4.0
 */
function wp_ajax_autocomplete_user()
{
    if (!is_multisite() || !current_user_can('promote_users') || wp_is_large_network('users')) {
        wp_die(-1);
    }
    /** This filter is documented in wp-admin/user-new.php */
    if (!current_user_can('manage_network_users') && !apply_filters('autocomplete_users_for_site_admins', false)) {
        wp_die(-1);
    }
    $return = array();
    // Check the type of request
    // Current allowed values are `add` and `search`
    if (isset($_REQUEST['autocomplete_type']) && 'search' === $_REQUEST['autocomplete_type']) {
        $type = $_REQUEST['autocomplete_type'];
    } else {
        $type = 'add';
    }
    // Check the desired field for value
    // Current allowed values are `user_email` and `user_login`
    if (isset($_REQUEST['autocomplete_field']) && 'user_email' === $_REQUEST['autocomplete_field']) {
        $field = $_REQUEST['autocomplete_field'];
    } else {
        $field = 'user_login';
    }
    // Exclude current users of this blog
    if (isset($_REQUEST['site_id'])) {
        $id = absint($_REQUEST['site_id']);
    } else {
        $id = get_current_blog_id();
    }
    $include_blog_users = ($type == 'search') ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $exclude_blog_users = ($type == 'add') ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $users = get_users(array('blog_id' => false, 'search' => '*' . $_REQUEST['term'] . '*', 'include' => $include_blog_users, 'exclude' => $exclude_blog_users, 'search_columns' => array('user_login', 'user_nicename', 'user_email')));
    foreach ($users as $user) {
        $return[] = array(
            /* translators: 1: User login, 2: User email address. */
            'label' => sprintf(_x('%1$s (%2$s)', 'user autocomplete result'), $user->user_login, $user->user_email),
            'value' => $user->{$field},
        );
    }
    wp_die(wp_json_encode($return));
}

WordPress Version: 4.8

/**
 * Ajax handler for user autocomplete.
 *
 * @since 3.4.0
 */
function wp_ajax_autocomplete_user()
{
    if (!is_multisite() || !current_user_can('promote_users') || wp_is_large_network('users')) {
        wp_die(-1);
    }
    /** This filter is documented in wp-admin/user-new.php */
    if (!current_user_can('manage_network_users') && !apply_filters('autocomplete_users_for_site_admins', false)) {
        wp_die(-1);
    }
    $return = array();
    // Check the type of request
    // Current allowed values are `add` and `search`
    if (isset($_REQUEST['autocomplete_type']) && 'search' === $_REQUEST['autocomplete_type']) {
        $type = $_REQUEST['autocomplete_type'];
    } else {
        $type = 'add';
    }
    // Check the desired field for value
    // Current allowed values are `user_email` and `user_login`
    if (isset($_REQUEST['autocomplete_field']) && 'user_email' === $_REQUEST['autocomplete_field']) {
        $field = $_REQUEST['autocomplete_field'];
    } else {
        $field = 'user_login';
    }
    // Exclude current users of this blog
    if (isset($_REQUEST['site_id'])) {
        $id = absint($_REQUEST['site_id']);
    } else {
        $id = get_current_blog_id();
    }
    $include_blog_users = ($type == 'search') ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $exclude_blog_users = ($type == 'add') ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $users = get_users(array('blog_id' => false, 'search' => '*' . $_REQUEST['term'] . '*', 'include' => $include_blog_users, 'exclude' => $exclude_blog_users, 'search_columns' => array('user_login', 'user_nicename', 'user_email')));
    foreach ($users as $user) {
        $return[] = array(
            /* translators: 1: user_login, 2: user_email */
            'label' => sprintf(_x('%1$s (%2$s)', 'user autocomplete result'), $user->user_login, $user->user_email),
            'value' => $user->{$field},
        );
    }
    wp_die(wp_json_encode($return));
}

WordPress Version: 4.5

/**
 * Ajax handler for user autocomplete.
 *
 * @since 3.4.0
 */
function wp_ajax_autocomplete_user()
{
    if (!is_multisite() || !current_user_can('promote_users') || wp_is_large_network('users')) {
        wp_die(-1);
    }
    /** This filter is documented in wp-admin/user-new.php */
    if (!is_super_admin() && !apply_filters('autocomplete_users_for_site_admins', false)) {
        wp_die(-1);
    }
    $return = array();
    // Check the type of request
    // Current allowed values are `add` and `search`
    if (isset($_REQUEST['autocomplete_type']) && 'search' === $_REQUEST['autocomplete_type']) {
        $type = $_REQUEST['autocomplete_type'];
    } else {
        $type = 'add';
    }
    // Check the desired field for value
    // Current allowed values are `user_email` and `user_login`
    if (isset($_REQUEST['autocomplete_field']) && 'user_email' === $_REQUEST['autocomplete_field']) {
        $field = $_REQUEST['autocomplete_field'];
    } else {
        $field = 'user_login';
    }
    // Exclude current users of this blog
    if (isset($_REQUEST['site_id'])) {
        $id = absint($_REQUEST['site_id']);
    } else {
        $id = get_current_blog_id();
    }
    $include_blog_users = ($type == 'search') ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $exclude_blog_users = ($type == 'add') ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $users = get_users(array('blog_id' => false, 'search' => '*' . $_REQUEST['term'] . '*', 'include' => $include_blog_users, 'exclude' => $exclude_blog_users, 'search_columns' => array('user_login', 'user_nicename', 'user_email')));
    foreach ($users as $user) {
        $return[] = array(
            /* translators: 1: user_login, 2: user_email */
            'label' => sprintf(_x('%1$s (%2$s)', 'user autocomplete result'), $user->user_login, $user->user_email),
            'value' => $user->{$field},
        );
    }
    wp_die(wp_json_encode($return));
}

WordPress Version: 4.1

/**
 * Ajax handler for user autocomplete.
 *
 * @since 3.4.0
 */
function wp_ajax_autocomplete_user()
{
    if (!is_multisite() || !current_user_can('promote_users') || wp_is_large_network('users')) {
        wp_die(-1);
    }
    /** This filter is documented in wp-admin/user-new.php */
    if (!is_super_admin() && !apply_filters('autocomplete_users_for_site_admins', false)) {
        wp_die(-1);
    }
    $return = array();
    // Check the type of request
    // Current allowed values are `add` and `search`
    if (isset($_REQUEST['autocomplete_type']) && 'search' === $_REQUEST['autocomplete_type']) {
        $type = $_REQUEST['autocomplete_type'];
    } else {
        $type = 'add';
    }
    // Check the desired field for value
    // Current allowed values are `user_email` and `user_login`
    if (isset($_REQUEST['autocomplete_field']) && 'user_email' === $_REQUEST['autocomplete_field']) {
        $field = $_REQUEST['autocomplete_field'];
    } else {
        $field = 'user_login';
    }
    // Exclude current users of this blog
    if (isset($_REQUEST['site_id'])) {
        $id = absint($_REQUEST['site_id']);
    } else {
        $id = get_current_blog_id();
    }
    $include_blog_users = ($type == 'search') ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $exclude_blog_users = ($type == 'add') ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $users = get_users(array('blog_id' => false, 'search' => '*' . $_REQUEST['term'] . '*', 'include' => $include_blog_users, 'exclude' => $exclude_blog_users, 'search_columns' => array('user_login', 'user_nicename', 'user_email')));
    foreach ($users as $user) {
        $return[] = array(
            /* translators: 1: user_login, 2: user_email */
            'label' => sprintf(__('%1$s (%2$s)'), $user->user_login, $user->user_email),
            'value' => $user->{$field},
        );
    }
    wp_die(wp_json_encode($return));
}

WordPress Version: 4.0

/**
 * Ajax handler for user autocomplete.
 *
 * @since 3.4.0
 */
function wp_ajax_autocomplete_user()
{
    if (!is_multisite() || !current_user_can('promote_users') || wp_is_large_network('users')) {
        wp_die(-1);
    }
    /** This filter is documented in wp-admin/user-new.php */
    if (!is_super_admin() && !apply_filters('autocomplete_users_for_site_admins', false)) {
        wp_die(-1);
    }
    $return = array();
    // Check the type of request
    // Current allowed values are `add` and `search`
    if (isset($_REQUEST['autocomplete_type']) && 'search' === $_REQUEST['autocomplete_type']) {
        $type = $_REQUEST['autocomplete_type'];
    } else {
        $type = 'add';
    }
    // Check the desired field for value
    // Current allowed values are `user_email` and `user_login`
    if (isset($_REQUEST['autocomplete_field']) && 'user_email' === $_REQUEST['autocomplete_field']) {
        $field = $_REQUEST['autocomplete_field'];
    } else {
        $field = 'user_login';
    }
    // Exclude current users of this blog
    if (isset($_REQUEST['site_id'])) {
        $id = absint($_REQUEST['site_id']);
    } else {
        $id = get_current_blog_id();
    }
    $include_blog_users = ($type == 'search') ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $exclude_blog_users = ($type == 'add') ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $users = get_users(array('blog_id' => false, 'search' => '*' . $_REQUEST['term'] . '*', 'include' => $include_blog_users, 'exclude' => $exclude_blog_users, 'search_columns' => array('user_login', 'user_nicename', 'user_email')));
    foreach ($users as $user) {
        $return[] = array(
            /* translators: 1: user_login, 2: user_email */
            'label' => sprintf(__('%1$s (%2$s)'), $user->user_login, $user->user_email),
            'value' => $user->{$field},
        );
    }
    wp_die(json_encode($return));
}

WordPress Version: 3.9

function wp_ajax_autocomplete_user()
{
    if (!is_multisite() || !current_user_can('promote_users') || wp_is_large_network('users')) {
        wp_die(-1);
    }
    /** This filter is documented in wp-admin/user-new.php */
    if (!is_super_admin() && !apply_filters('autocomplete_users_for_site_admins', false)) {
        wp_die(-1);
    }
    $return = array();
    // Check the type of request
    // Current allowed values are `add` and `search`
    if (isset($_REQUEST['autocomplete_type']) && 'search' === $_REQUEST['autocomplete_type']) {
        $type = $_REQUEST['autocomplete_type'];
    } else {
        $type = 'add';
    }
    // Check the desired field for value
    // Current allowed values are `user_email` and `user_login`
    if (isset($_REQUEST['autocomplete_field']) && 'user_email' === $_REQUEST['autocomplete_field']) {
        $field = $_REQUEST['autocomplete_field'];
    } else {
        $field = 'user_login';
    }
    // Exclude current users of this blog
    if (isset($_REQUEST['site_id'])) {
        $id = absint($_REQUEST['site_id']);
    } else {
        $id = get_current_blog_id();
    }
    $include_blog_users = ($type == 'search') ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $exclude_blog_users = ($type == 'add') ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $users = get_users(array('blog_id' => false, 'search' => '*' . $_REQUEST['term'] . '*', 'include' => $include_blog_users, 'exclude' => $exclude_blog_users, 'search_columns' => array('user_login', 'user_nicename', 'user_email')));
    foreach ($users as $user) {
        $return[] = array(
            /* translators: 1: user_login, 2: user_email */
            'label' => sprintf(__('%1$s (%2$s)'), $user->user_login, $user->user_email),
            'value' => $user->{$field},
        );
    }
    wp_die(json_encode($return));
}

WordPress Version: 3.7

function wp_ajax_autocomplete_user()
{
    if (!is_multisite() || !current_user_can('promote_users') || wp_is_large_network('users')) {
        wp_die(-1);
    }
    /** This filter is documented in wp-admin/user-new.php */
    if (!is_super_admin() && !apply_filters('autocomplete_users_for_site_admins', false)) {
        wp_die(-1);
    }
    $return = array();
    // Check the type of request
    if (isset($_REQUEST['autocomplete_type'])) {
        $type = $_REQUEST['autocomplete_type'];
    } else {
        $type = 'add';
    }
    // Exclude current users of this blog
    if (isset($_REQUEST['site_id'])) {
        $id = absint($_REQUEST['site_id']);
    } else {
        $id = get_current_blog_id();
    }
    $include_blog_users = ($type == 'search') ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $exclude_blog_users = ($type == 'add') ? get_users(array('blog_id' => $id, 'fields' => 'ID')) : array();
    $users = get_users(array('blog_id' => false, 'search' => '*' . $_REQUEST['term'] . '*', 'include' => $include_blog_users, 'exclude' => $exclude_blog_users, 'search_columns' => array('user_login', 'user_nicename', 'user_email')));
    foreach ($users as $user) {
        $return[] = array(
            /* translators: 1: user_login, 2: user_email */
            'label' => sprintf(__('%1$s (%2$s)'), $user->user_login, $user->user_email),
            'value' => $user->user_login,
        );
    }
    wp_die(json_encode($return));
}