WP Manifestindependent plugin directory
manifest / content / cmb2-user-select

WDS CMB2 User Select

Select a user to associate with your object

★ 21stars
1.3kcomposer installs

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/cmb2/cmb2-user-select/archive/refs/heads/master.zip

On Packagist as webdevstudios/cmb2-user-select:

composer require webdevstudios/cmb2-user-select
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Special CMB2 Field that allows users to define an autocomplete text field for users

Example

$cmb2->add_field( array(
    'name'  => 'Author',,
    'id'    => 'author',
    'desc'  => 'Type the name of the author and select from the options',
    'type'  => 'user_select_text'
    'options' => array(
        'user_roles' => array( 'role1', 'role2' ), // Specify which roles to query for.
    ),
) );

The value returned is an array with the users id and name, eg:

array(
    'id'   => 1
    'name' => 'Joe Blogs'
)

This will be serialised if saved directly into the database.

If you wish to store the users ID only, you can use escape_cb and sanitization_cb to transform the data.

/**
 * Takes the id from the database and returns an array for user_select_text
 * @param int $value
 * @return array('name' => string, 'id' => int)
 */
function id_to_user_select_text($value) {
    $user = get_user_by('id', (int)$value);
    return array(
        'name' => $user->display_name,
        'id'   => $user->ID,
    );
}

/**
 * Takes the array from user_select_text and returns the id for the database
 * @param array('name' => string, 'id' => int) $value
 * @return int
 */
function user_select_text_to_id($value) {
    return $value['id'];
}

$cmb2->add_field( array(
    // ...snip...
    'escape_cb'       => 'user_select_text_to_id',
    'sanitization_cb' => 'id_to_user_select_text',
) );