Pesquisando na Tabela Principal
Basta usar WP_User_Querycom um argumento de pesquisa.
Portanto, se você deseja procurar, por exemplo, um usuário com uma palavra-chave em suas user_emailcolunas ou colunas semelhantes da {$wpdb->prefix}userstabela, faça o seguinte:
$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();
Lembre-se de que *é um curinga. Então, restringindo por exemplo o user_emaila um único domínio iria dar-lhe a seguinte seqüência de pesquisa: *@example.com.
A searchstring possui alguns recursos "mágicos": O search_columnspadrão é ...
user_emailse @está presente no searchargumento.
user_logine IDse o searchargumento for numérico
user_urlse a searchcadeia contiver http://ouhttps://
- ou ...
user_logine user_nicenamese uma string estiver presente.
Todos esses padrões são definidos apenas se nenhum search_columns argumento foi especificado.
Pesquisando na Metabela
Se você quiser pesquisar por, por exemplo , first_nameou last_name, será necessário fazer um, meta_querypois eles não fazem parte da tabela 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();
Certifique-se de recuperar a sequência de pesquisa correta. Normalmente seria get_query_var('s');, mas poderia - dependendo do seu formulário name/id, também ser algo diferente que você pode recuperar usando, $_GET['user_search']por exemplo. Esacpe-o adequadamente e remova os espaços em branco indesejados do início e do fim da string.
Lembre-se de que isso é uma array( array() )vez que existe a relationchave. Se você deseja apenas pesquisar uma única chave, pode ser mais fácil seguir o seguinte:
$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
O resultado pode parecer próximo ao seguinte:
$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();