워드프레스 사용자 목록에서 특정 열을 제거, 추가하고싶었다.
워드프레스 기본 포스트타입인 posts
를 제외한 커스텀 포스트 타입의 포스트 갯수는 볼 수가없나? 커스텀 포스트 타입이라 그럴 수 있다 생각했다.
그렇다면 어떻게 추가해야할까?
기본 정보 살펴보기
워드프레스 사용자 테이블에는 기본적으로 6개 기본제공 열이 있다.
wp-admin/includes/class-wp-users-list-table.php#269
의 WP_Users_List_Table::get_columns()
메소드에 정의되어있다.
$c = array(
'cb' => '<input type="checkbox" />',
'username' => __( 'Username' ),
'name' => __( 'Name' ),
'email' => __( 'E-mail' ),
'role' => __( 'Role' ),
'posts' => __( 'Posts' )
);
Code language: PHP (php)
열 추가하기
열을 추가하기 위해서는 functions.php
에 아래서 처럼 추가할 수 있다.
/*
* Print Event Column Value
*/
add_filter('manage_users_custom_column', 'user_event_column_value', 10, 3);
function user_event_column_value($value, $column_name, $id)
{
if ($column_name == 'user_events') {
global $wpdb;
$count = (int) $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(ID) FROM $wpdb->posts WHERE
post_type = 'events' AND post_status = 'publish' AND post_author = %d",
$id
));
return $count;
}
}
Code language: PHP (php)
user_events
열에 어떤 데이터가 들어갈 것인지 지정해준다.
add_filter('manage_users_columns', 'users_events_column');
function users_events_column($cols)
{
$cols['user_events'] = 'user_events';
return $cols;
}
Code language: PHP (php)
위에 코드로 사용자목록에 열을 직정 지정해 준다.
이렇게하면 user_events
라는 열과함께 포스트 타입이 events인 포스트들의 갯수를 구해 오고 사용자목록에 노출시킬 수 있다.
열 제거
어떻게 제거할 것인가?
add_filter('manage_users_columns', 'users_events_column');
function users_events_column($cols)
{
$cols['user_events'] = 'user_events';
return $cols;
}
Code language: PHP (php)
위 코드가 열을 추가하는 코드였는데 여기서 $cols
에 어떤 열들을 표현할 것인지 담겨있다. 그러면 이제 제거하고싶은 열을 배열에서 제거해주면된다.
나 같은 경우는 post
라는 이름의 포스트타입은 사용하지 않기 때문에 제거해야한다.
function users_events_column($cols)
{
$cols['user_events'] = 'user_events';
unset($cols['posts']);
return $cols;
}
Code language: PHP (php)
이런 식으로 posts
를 제거하면 posts의 갯수 열은 제거된다.
응용 & 추가정보
사용자 정의 게시물 유형의 경우 manage_{$post_type}_posts_columns
필터를 사용할 수 있습니다.