В административной панели WordPress по умолчанию отображается стандартный набор колонок в списках записей, страниц, пользователей и других типов контента. Однако часто требуется добавить собственные колонки с дополнительной информацией, изменить порядок или скрыть ненужные колонки для повышения удобства работы. В этой статье мы подробно рассмотрим, как настроить и кастомизировать колонки в админке WordPress на примере различных типов записей и пользователей.
Почему важно настраивать колонки в админке WordPress
По умолчанию WordPress выводит базовый набор колонок, например, заголовок, автора, дату публикации. Но для сайтов с большим объемом контента или специфическими данными эти колонки могут быть недостаточными. Например, для интернет-магазина важно видеть статусы заказов, для образовательного сайта — прогресс учеников, а для блога — количество просмотров или рейтинги.
Настройка колонок позволяет:
- Ускорить работу с контентом, отображая нужную информацию сразу в списке.
- Избежать постоянного открытия каждой записи для просмотра данных.
- Повысить удобство и эффективность администрирования.
Как добавить собственные колонки в список записей (Custom Post Types и стандартные)
Для добавления и управления колонками в списке записей используется фильтр manage_{$post_type}_posts_columns и действие manage_{$post_type}_posts_custom_column. Рассмотрим пример для стандартного типа записей (post), добавим колонку с количеством просмотров.
function wpqa_add_custom_column( $columns ) {
$columns['wpqa_post_views'] = 'Просмотры';
return $columns;
}
add_filter( 'manage_post_posts_columns', 'wpqa_add_custom_column' );
function wpqa_custom_column_content( $column, $post_id ) {
if ( 'wpqa_post_views' === $column ) {
$views = get_post_meta( $post_id, 'wpqa_post_views_count', true );
echo $views ? intval( $views ) : '0';
}
}
add_action( 'manage_post_posts_custom_column', 'wpqa_custom_column_content', 10, 2 );В этом примере мы добавляем колонку «Просмотры» и выводим в ней значение из метаполя wpqa_post_views_count. Если у записи нет данных, выводится 0.
Как обновлять данные просмотров
Для автоматического подсчёта просмотров можно использовать небольшой код, который увеличивает значение при просмотре записи:
function wpqa_set_post_views() {
if ( is_single() ) {
global $post;
$count = get_post_meta( $post->ID, 'wpqa_post_views_count', true );
$count = $count ? $count + 1 : 1;
update_post_meta( $post->ID, 'wpqa_post_views_count', $count );
}
}
add_action( 'wp_head', 'wpqa_set_post_views' );Это простой способ вести счетчик просмотров без сторонних плагинов.
Как изменить порядок и скрыть колонки в админке
Чтобы изменить порядок колонок, следует переопределить массив колонок в фильтре manage_{$post_type}_posts_columns. Для скрытия определённых колонок можно просто не включать их в массив.
Например, чтобы убрать колонки «Автор» и «Дата» и добавить «Просмотры» в начало:
function wpqa_customize_columns_order( $columns ) {
$new_columns = [];
$new_columns['wpqa_post_views'] = 'Просмотры';
$new_columns['title'] = $columns['title'];
$new_columns['categories'] = $columns['categories'];
// другие колонки по желанию
return $new_columns;
}
add_filter( 'manage_post_posts_columns', 'wpqa_customize_columns_order' );Добавление сортируемых колонок
Если необходимо сделать новую колонку сортируемой, добавьте фильтр manage_edit-{$post_type}_sortable_columns и реализуйте сортировку через pre_get_posts:
function wpqa_make_column_sortable( $columns ) {
$columns['wpqa_post_views'] = 'wpqa_post_views';
return $columns;
}
add_filter( 'manage_edit-post_sortable_columns', 'wpqa_make_column_sortable' );
function wpqa_sort_by_views( $query ) {
if ( ! is_admin() ) return;
$orderby = $query->get( 'orderby' );
if ( 'wpqa_post_views' === $orderby ) {
$query->set( 'meta_key', 'wpqa_post_views_count' );
$query->set( 'orderby', 'meta_value_num' );
}
}
add_action( 'pre_get_posts', 'wpqa_sort_by_views' );Теперь администратор сможет сортировать записи по просмотрам.
Настройка колонок для пользователей и таксономий
Кастомизация колонок доступна не только для записей, но и для списка пользователей и таксономий. Для пользователей используются фильтры manage_users_columns и действие manage_users_custom_column.
Пример добавления колонки с ролью пользователя:
function wpqa_add_user_role_column( $columns ) {
$columns['wpqa_user_role'] = 'Роль';
return $columns;
}
add_filter( 'manage_users_columns', 'wpqa_add_user_role_column' );
function wpqa_show_user_role_column( $value, $column_name, $user_id ) {
if ( 'wpqa_user_role' === $column_name ) {
$user = get_userdata( $user_id );
return implode( ', ', $user->roles );
}
return $value;
}
add_action( 'manage_users_custom_column', 'wpqa_show_user_role_column', 10, 3 );Полезные плагины для кастомизации колонок
Если вы не хотите писать код, можно воспользоваться плагинами, которые расширяют возможности настройки колонок:
- Admin Columns — мощный инструмент для управления колонками в админке, поддерживает кастомные поля, таксономии, сортировку и фильтрацию.
- Clearfy Pro — имеет опции для упрощения и кастомизации админки, в том числе настройку отображения колонок.
Эти плагины помогут сэкономить время и избежать ошибок при ручном кодировании.
Советы по производительности и безопасности
При добавлении кастомных колонок с метаданными стоит учитывать производительность. Запросы к базе для каждой записи могут замедлить загрузку страницы списка. Рекомендуется:
- Использовать кеширование значений.
- Избегать сложных запросов в функциях вывода колонок.
- Оптимизировать индексы в базе данных для метаполей.
Также не забывайте проверять права пользователей, чтобы не показывать конфиденциальную информацию там, где это не нужно.
Заключение
Кастомизация колонок в административной панели WordPress — мощный инструмент для повышения эффективности работы с контентом и пользователями. Используя фильтры и действия, вы можете легко добавить нужные данные, изменить порядок колонок и сделать их сортируемыми. В качестве альтернативы можно применить готовые плагины, такие как Admin Columns или Clearfy Pro, которые значительно упрощают эту задачу.
Для примеров кода в статье использовался префикс wpqa_, чтобы избежать конфликтов и упростить интеграцию с вашим проектом.