Home Blog wp_Dev. woocommerce 어드민 유저 리스트에 가입일, 이름(first_name) 컬럼 추가. 이름도 검색에 포함시키기

어드민 유저 리스트에 가입일, 이름(first_name) 컬럼 추가. 이름도 검색에 포함시키기

우커머스로 쇼핑몰을 운영 시 유저 리스트에 운영에 필요한 컬럼들을 추가하고, 일부는 검색이 되도록 해 달라는 요청이 몇차례 있어서 최대한 간단한 방법으로 조치가 가능하도록 정리를 해 보았습니다. 필요하신 경우 한 번 응용을 해 보세요.

1. 어드민 유저 리스트에 컬럼을 추가하는 방법 

플러그인 없이 functions,.php에 코드 추가로 모든 요청 내용이 처리가 가능하였지만, 그보다 서로 다른 상황에 따라 일일이 수정을 하기 보다는 전 admin column (free) 이라는 플러그인으로 간단하게 컬럼을 추가하는 방법을 주로 이용 중입니다.

(△ 기본 메타들은 선택만 하면 끝. 없는 메타정보는 커스텀 필드로 마음대로 추가 가능 ▽)

 

2.  추가된 ‘가입일’ 컬럼을 정렬이 가능한 컬럼으로 변경

( ※ 참고로 admin column pro 에는 컬럼 추가 시 이미 정렬가능토록 하는 옵션 외 다양한 기능이 제공됩니다. )

2-1) 유저 리스트에서 admin-column으로 추가한 컬럼의 th 태그 아이디를 확인합니다. 

( 컬럼 아이디가 플러그인에 의해 임의로 생성이 되다 보니 난수값 같은 것으로 표시 )

 

2-2) functions.php에 해당 컬럼을 소트 가능한 컬럼으로 등록합니다.   
add_filter( 'manage_users_sortable_columns', 'oks_make_registered_column_sortable' );
function oks_make_registered_column_sortable( $columns ) {
    return wp_parse_args( array( '5afe1649b6fd1' => 'registered' ), $columns );
    // 확인한 컬럼 id로 교체하면 됨. 정렬에 필요한 값은 registered(가입일) 
}

가입일 컬럼이 정렬 가능하도록 변경이 되면 OK.

 

3. 추가된 이름(first_name) 컬럼도 유저 검색에 포함시키기 

워드프레스에서 제공하는 pre_user_query 훅을 이용해서 검색 키워드를 추가합니다.  (https://developer.wordpress.org/reference/hooks/pre_user_query/)

add_action( 'pre_user_query', function( $uqi ) {
    global $wpdb;
 
    $search = '';
    if ( isset( $uqi->query_vars['search'] ) )
        $search = trim( $uqi->query_vars['search'] );
 
    if ( $search ) {
        $search = trim($search, '*');
        $the_search = '%'.$search.'%';
 
        $search_meta = $wpdb->prepare("
        ID IN ( SELECT user_id FROM {$wpdb->usermeta}
        WHERE ( ( meta_key='first_name' OR meta_key='some_more' )   
            AND {$wpdb->usermeta}.meta_value LIKE '%s' )
        )", $the_search);
        // OR 로 필요한 메타 키워드 게속 추가 가능
 
        $uqi->query_where = str_replace(
            'WHERE 1=1 AND (',
            "WHERE 1=1 AND (" . $search_meta . " OR ",
            $uqi->query_where );
    }
});

유저 리스트에서 이름 검색 결과 유저가 검색되면 OK

 

상황에 따라 전화번호나 기타 메타 정보를 컬럼에 추가하는 경우도 위 방법으로 뚝딱 적용이 가능합니다.

 

끝.

2 댓글. Leave new

  • 안녕하세요. 좋은정보 너무 감사합니다.

    알려주신 ” 2-2) functions.php에 해당 컬럼을 소트 가능한 컬럼으로 등록합니다. ” 의 코드를 알려주신 방법으로 제 코드로 변경하여 진행을 했는데 계속 애러가 뜨는데, 제가 초보라 뭘 잘못했는지를 도저히 찾을수가 없습니다. 제가 add한 코드는

    add_filter( ‘manage_users_sortable_columns’, ‘oks_make_registered_column_sortable’ );
    function oks_make_registered_column_sortable( $columns ) {
    return wp_parse_args( array( ‘5e6aa645a669e’ => ‘registered’ ), $columns );
    }

    입니다. 혹시 제가 더 수정해야하는 부분이 있는지 감히 여쭤봅니다. 감사합니다.

    응답
    • 어떤 에러가 발생하는 상황인가요? 사이트가 아예 안 열리는 것이라면 구문 에러가 있는 것이고요. 주로 { } 열고 닫고나 ;를 입력 안 한 경우 쉽게 발생합니다. 다른 특이사항이라면 알려 주세요.
      추가로 핵심은 ‘manage_users_sortable_columns’ 라는 워드프레스의 소트 가능한 컬럼을 만들 수 있는 훅을 이용하는 것입니다. 이 훅을 검색해 보시면 더 정확한 정보 확인도 가능합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Fill out this field
Fill out this field
유효한 이메일 주소를 입력해주세요.
You need to agree with the terms to proceed

다음
원픽 테마는 Impreza
이전
css flex 속성을 이용하여 화면에 표시된 요소 순서 바꾸기