답변:
WP_User_Query
검색 인수와 함께 사용하십시오 .
예를 들어 user_email
, {$wpdb->prefix}users
표 에서 유사하거나 비슷한 열에 키워드가있는 사용자를 검색 하려면 다음을 수행하십시오.
$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();
*
와일드 카드 임을 명심하십시오 . 예를 들어 user_email
를 단일 도메인으로 제한 하면 다음과 같은 검색 문자열이 제공 *@example.com
됩니다.
search
문자열은 약간의 "마법"기능이 다음 search_columns
기본값을 ...
user_email
인수 @
에있는 경우search
user_login
및 ID
경우 search
인수는 숫자입니다user_url
경우 search
문자열이 포함 http://
또는https://
user_login
그리고 user_nicename
문자열이있는 경우.이러한 모든 기본값은 인수가 지정 되지 않은 경우에만 설정됩니다 search_columns
.
예를 들어 first_name
또는 로 검색 하려면 기본 테이블의 일부가 아니므로 last_name
수행해야 meta_query
합니다.
$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();
올바른 검색 문자열을 검색하십시오. 일반적으로 get_query_var('s');
그럴 수도 있지만 양식에 따라 예를 들어 name/id
검색하려는 것과 다를 수도 있습니다 $_GET['user_search']
. 올바르게 도피하고 줄의 시작과 끝에서 불필요한 공백을 제거하십시오.
이것이 있음을 유의하십시오 array( array() )
거기로 relation
키를 누릅니다. 단일 키만 검색하려면 다음을 수행하는 것이 더 쉬울 수 있습니다.
$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();
결과 는 다음과 비슷하게 보일 수 있습니다 .
$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();
functions.php
, 템플릿 또는 테마를 바꿀 때 기능을 잃지 않도록 사용자 정의 미니 플러그인으로 멋지게 싸서 있습니다.
display_name
의 열입니다 wp_users
. 두 가지 질문이 떠 오릅니다. 1 : 이것이 데이터베이스 스키마의 최근 변경입니까? 2 : search_columns
메타 쿼리 대신 값으로 사용할 수 있습니까 ?
이것은 카이저의 대답 대신 나를 도왔습니다 : https://laubsterboy.com/blog/2015/07/search-wordpress-users-by-name/
그러나이 솔루션 $wpdb->escape($usermeta_keys)
함수에서 오류가 발생했기 때문에 간단히 사용했습니다 $usermeta_keys
.