Административная панель WordPress — основной инструмент для управления сайтом. Однако стандартный набор колонок в списках записей, страниц или пользовательских типов записей часто не удовлетворяет конкретным требованиям. В этой статье разберём, как оптимизировать колонки в админке WordPress, добавлять, удалять и настраивать их так, чтобы повысить эффективность работы.
Почему стоит оптимизировать колонки в списках WordPress
Стандартные колонки, такие как заголовок, автор, дата и категории, подходят далеко не для всех проектов. Часто нужно видеть специфическую информацию — например, мета-поля, количество просмотров, статусы оплаты или другие пользовательские данные.
Оптимизация колонок помогает:
- Быстро находить и фильтровать важную информацию.
- Уменьшить количество кликов, упрощая администрирование.
- Автоматизировать задачи, отображая данные, которые обычно требуют дополнительных переходов.
Для разработчика это возможность сделать админку удобнее для себя и клиентов.
Как добавить и удалить колонки в админке WordPress
Для управления колонками используются фильтры manage_{$post_type}_posts_columns и действие manage_{$post_type}_posts_custom_column. Ниже пример добавления колонки «Просмотры» в стандартный список записей:
add_filter('manage_posts_columns', 'wpcoding_add_views_column');
function wpcoding_add_views_column($columns) {
$columns['wpcoding_views'] = 'Просмотры';
return $columns;
}
add_action('manage_posts_custom_column', 'wpcoding_show_views_column', 10, 2);
function wpcoding_show_views_column($column, $post_id) {
if ($column == 'wpcoding_views') {
$views = get_post_meta($post_id, 'wpcoding_post_views', true);
echo $views ? intval($views) : 0;
}
}
В этом примере мы добавляем колонку с ключом wpcoding_views и выводим значение мета-поля «wpcoding_post_views». Чтобы это работало, нужно предварительно сохранить количество просмотров в мета-поле.
Удаление ненужных колонок
Для удаления стандартных колонок можно использовать тот же фильтр, просто исключая нужные ключи:
add_filter('manage_posts_columns', 'wpcoding_remove_columns');
function wpcoding_remove_columns($columns) {
unset($columns['comments']);
unset($columns['author']);
return $columns;
}
Так мы уберём колонки комментариев и автора, если они не нужны.
Сортировка и фильтрация по пользовательским колонкам
Добавить колонку — это только часть задачи. Чтобы сделать её полезной, надо реализовать сортировку и фильтрацию.
Сортировка по пользовательской колонке
Для сортировки по нашей колонке «Просмотры» используем фильтры manage_edit-post_sortable_columns и действие pre_get_posts:
add_filter('manage_edit-post_sortable_columns', 'wpcoding_sortable_views_column');
function wpcoding_sortable_views_column($columns) {
$columns['wpcoding_views'] = 'wpcoding_views';
return $columns;
}
add_action('pre_get_posts', 'wpcoding_views_orderby');
function wpcoding_views_orderby($query) {
if (!is_admin() || !$query->is_main_query()) {
return;
}
if ('wpcoding_views' === $query->get('orderby')) {
$query->set('meta_key', 'wpcoding_post_views');
$query->set('orderby', 'meta_value_num');
}
}
Теперь в админке можно кликнуть по заголовку колонки, чтобы отсортировать записи по просмотрам.
Фильтрация по колонкам
Для добавления фильтров в верхнюю панель используем хук restrict_manage_posts. Пример: фильтр по мета-полю со статусом:
add_action('restrict_manage_posts', 'wpcoding_filter_by_status');
function wpcoding_filter_by_status() {
$screen = get_current_screen();
if ('post' !== $screen->post_type) {
return;
}
$current_status = isset($_GET['wpcoding_status_filter']) ? sanitize_text_field($_GET['wpcoding_status_filter']) : '';
?>
<select name="wpcoding_status_filter">
<option value="">Все статусы</option>
<option value="new" <?php selected($current_status, 'new'); ?>>Новые</option>
<option value="reviewed" <?php selected($current_status, 'reviewed'); ?>>Проверенные</option>
</select>
<?php
}
add_action('pre_get_posts', 'wpcoding_filter_query_by_status');
function wpcoding_filter_query_by_status($query) {
if (!is_admin() || !$query->is_main_query()) {
return;
}
if (!empty($_GET['wpcoding_status_filter'])) {
$query->set('meta_query', [[
'key' => 'wpcoding_post_status',
'value' => sanitize_text_field($_GET['wpcoding_status_filter']),
'compare' => '=',
]]);
}
}
Так администратор может быстро отфильтровать записи по статусу, заданному в мета-поле.
Примеры плагинов для расширения колонок в админке
Если хочется готовых решений, можно обратить внимание на следующие плагины:
- Admin Columns — мощный инструмент для управления колонками с поддержкой сортировки, фильтрации и редактирования прямо в списках.
- Clearfy Pro — универсальный плагин для оптимизации WordPress, который также позволяет управлять колонками и скрывать лишние элементы.
Для разработчиков удобнее писать собственные функции, но плагины помогут быстро настроить интерфейс без кода.
Советы по организации колонок для разных типов записей
Для стандартных записей зачастую полезно показывать:
- Количество просмотров (через мета-поле).
- Статус публикации или дополнительный статус.
- Кастомные таксономии.
Для пользовательских типов записей имеет смысл отображать специфичные данные, например:
- Для товаров — цену, наличие на складе, рейтинг.
- Для мероприятий — дату начала, место проведения.
- Для заявок — контактные данные, статус обработки.
Организуйте колонки так, чтобы важная информация была видна без кликов и переходов.
Как использовать колонки в связке с WP REST API
Для современных решений полезно, чтобы данные из колонок были доступны и через WP REST API. Можно добавить кастомные поля в ответ API с помощью фильтра rest_prepare_post:
add_filter('rest_prepare_post', 'wpcoding_add_views_to_rest', 10, 3);
function wpcoding_add_views_to_rest($response, $post, $request) {
$views = get_post_meta($post->ID, 'wpcoding_post_views', true);
$response->data['wpcoding_views'] = $views ? intval($views) : 0;
return $response;
}
Таким образом, фронтенд-приложения смогут получать и отображать расширенную информацию.