워드프레스를 회원제로 운영하다보면 이름 검색에 난항을 겪게 된다. 회원의 수가 몇 안될 경우에야 별 문제가 없지만 몇 천명 이상 되는 사이트에서는 이름을 찾는 것이 큰 이슈로 작용한다. 워드프레스의 사용자 관리 테이블에서 모든 정보를 한번에 검색해주는 것이 아니기 때문에 이름 검색 시 사용자 테이블인 users와 usermeta를 연관 검색할 수 있도록 하는 방법을 쓰면 된다.
아래와 같이 테마의 functions.php에 입력해주면 OK.
(아래의 경우 WP-Members와 함께 사용할 경우를 가정. 사용하지 않는다면 첫 번째 코드 블럭은 삭제해도 무방)
//first_name을 display_name으로 설정(Wp-members 사용 시 적용)
add_filter( 'wpmem_register_data', 'set_default_display_name' );
function set_default_display_name( $fields ) {
$fields['display_name'] = $fields['first_name'];
return $fields;
}
add_filter( 'wpmem_register_data', 'set_default_user_nicename' );
function set_default_user_nicename( $fields ) {
$fields['user_nicename'] = $fields['first_name'];
return $fields;
}
//관리자 이외 툴바 감추기
if ( ! current_user_can( 'manage_options' ) ) {
show_admin_bar( false );
}
//회원 이름 검색
add_filter( 'user_search_columns', 'filter_function_name', 10, 3 );
function filter_function_name( $search_columns, $search, $this ) {
$search_columns[] = 'display_name';
return $search_columns;
}