Buscando en la mesa principal
Simplemente utilícelo WP_User_Querycon un argumento de búsqueda.
Entonces, si desea buscar, por ejemplo, un usuario con una palabra clave en su user_emailcolumna o columnas similares de la {$wpdb->prefix}userstabla, puede hacer lo siguiente:
$users = new WP_User_Query( array(
'search' => '*'.esc_attr( $your_search_string ).'*',
'search_columns' => array(
'user_login',
'user_nicename',
'user_email',
'user_url',
),
) );
$users_found = $users->get_results();
Tenga en cuenta que *es un comodín. Así, por ejemplo, restringiendo el user_emailque un único dominio le daría la siguiente cadena de búsqueda: *@example.com.
La searchcadena tiene algunas características "mágicas": los search_columnsvalores predeterminados para ...
user_emailsi @está presente en el searchargumento
user_loginy IDsi el searchargumento es numérico
user_urlsi la searchcadena contiene http://ohttps://
- o ...
user_loginy user_nicenamesi hay una cadena presente.
Todos esos valores predeterminados solo se establecen si no search_columns se especificó ningún argumento.
Buscando en la metatabla
Si desea buscar por ejemplo first_nameo last_name, entonces tendrá que hacer una, meta_queryya que no son parte de la tabla principal:
$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'first_name',
'value' => $search_string,
'compare' => 'LIKE'
),
array(
'key' => 'last_name',
'value' => $search_string,
'compare' => 'LIKE'
)
)
) );
$users_found = $users->get_results();
Asegúrese de recuperar la cadena de búsqueda correcta. Normalmente eso sería get_query_var('s');, pero podría, dependiendo de su forma name/id, también podría ser algo diferente que podría querer recuperar usando, $_GET['user_search']por ejemplo. Asegúrese de cerrarlo correctamente y eliminar el espacio en blanco no deseado desde el principio y el final de la cadena.
Tenga en cuenta que esta es una array( array() )que está la relationclave. Si solo desea que se busque una sola clave, puede ser más fácil simplemente ir con lo siguiente:
$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
'meta_key' => 'first_name',
'meta_value' => $search_string,
'meta_compare' => 'LIKE',
) );
$users_found = $users->get_results();
Consulta final
El resultado podría parecerse al siguiente:
$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
'search' => "*{$search_string}*",
'search_columns' => array(
'user_login',
'user_nicename',
'user_email',
'user_url',
),
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'first_name',
'value' => $search_string,
'compare' => 'LIKE'
),
array(
'key' => 'last_name',
'value' => $search_string,
'compare' => 'LIKE'
)
)
) );
$users_found = $users->get_results();