Как оптимизировать колонки в админке WordPress для удобства управления

Управление большим количеством записей в админке WordPress может стать неудобным без правильной настройки отображения колонок. В этой статье мы подробно разберём, как оптимизировать колонки в списках записей, страниц и других типов контента, чтобы сделать админку более удобной и информативной.

Зачем оптимизировать колонки в админке WordPress

Стандартный список записей в WordPress показывает только базовые колонки: заголовок, автора, категории, теги, дату. Но при работе с кастомными типами записей или большим объёмом данных этого часто недостаточно. Добавление нужных колонок помогает быстро получить важную информацию и улучшить рабочий процесс.

Оптимизация колонок особенно актуальна в следующих случаях:

  • Использование кастомных типов записей с уникальными метаполями.
  • Необходимость отображать дополнительные данные, например, статусы или пользовательские поля.
  • Ускорение обработки контента без перехода в каждую запись.

Мы рассмотрим примеры, как добавить, удалить и настроить колонки с помощью кода и популярных плагинов.

Как добавить и настроить колонки для стандартных и кастомных типов записей

Добавление новых колонок с помощью хуков WordPress

Для настройки колонок в админке используются фильтры manage_{$post_type}_posts_columns и экшены manage_{$post_type}_posts_custom_column. Они позволяют добавить новые колонки и вывести в них нужные данные.

Пример: добавим колонку «ID записи» в список записей:

add_filter('manage_posts_columns', 'wpfreecourses_add_id_column');
function wpfreecourses_add_id_column($columns) {
    $columns = array_slice($columns, 0, 1, true) +
               ['post_id' => 'ID'] +
               array_slice($columns, 1, null, true);
    return $columns;
}

add_action('manage_posts_custom_column', 'wpfreecourses_show_id_column', 10, 2);
function wpfreecourses_show_id_column($column_name, $post_id) {
    if ($column_name === 'post_id') {
        echo $post_id;
    }
}

Такой код добавит колонку с ID записи сразу после чекбокса. Аналогично можно добавить свои колонки для кастомных типов записей, заменив posts на нужный тип, например, manage_product_posts_columns.

Удаление ненужных колонок

Если стандартные колонки мешают или не нужны, их можно убрать, удалив соответствующие ключи из массива. Например, чтобы убрать колонку «Теги»:

add_filter('manage_posts_columns', 'wpfreecourses_remove_tags_column');
function wpfreecourses_remove_tags_column($columns) {
    if (isset($columns['tags'])) {
        unset($columns['tags']);
    }
    return $columns;
}

Это помогает сделать интерфейс более чистым и удобным.

Отображение данных из метаполей и таксономий в колонках

Чтобы вывести данные из пользовательских полей (метаполей) или таксономий, в функции, которая выводит содержимое колонки, нужно получить эти данные по ID записи.

Пример: добавим колонку с метаполем «Цена» для кастомного типа записи product:

add_filter('manage_product_posts_columns', 'wpfreecourses_add_price_column');
function wpfreecourses_add_price_column($columns) {
    $columns['price'] = 'Цена';
    return $columns;
}

add_action('manage_product_posts_custom_column', 'wpfreecourses_show_price_column', 10, 2);
function wpfreecourses_show_price_column($column_name, $post_id) {
    if ($column_name === 'price') {
        $price = get_post_meta($post_id, 'price', true);
        echo $price ? esc_html($price) : '-';
    }
}

Для таксономий вывод осуществляется через функцию get_the_term_list() или get_the_terms(). Например, для вывода категорий товара:

add_filter('manage_product_posts_columns', 'wpfreecourses_add_category_column');
function wpfreecourses_add_category_column($columns) {
    $columns['product_cat'] = 'Категория';
    return $columns;
}

add_action('manage_product_posts_custom_column', 'wpfreecourses_show_category_column', 10, 2);
function wpfreecourses_show_category_column($column_name, $post_id) {
    if ($column_name === 'product_cat') {
        $terms = get_the_terms($post_id, 'product_cat');
        if (!empty($terms) && !is_wp_error($terms)) {
            $out = [];
            foreach ($terms as $term) {
                $out[] = esc_html($term->name);
            }
            echo implode(', ', $out);
        } else {
            echo '-';
        }
    }
}

Плагины для удобного управления колонками в админке

Если не хочется писать код, можно использовать готовые решения. Вот несколько популярных плагинов для управления колонками:

  • Admin Columns — мощный и удобный плагин для добавления, удаления и сортировки колонок в админке. Позволяет работать с метаполями, таксономиями и даже пользовательскими полями.
  • Codepress Admin Columns — базовая версия плагина Admin Columns с бесплатным функционалом, подходящим для большинства задач.
  • WP Sheet Editor — позволяет редактировать контент прямо в виде таблицы с колонками, что удобно для массового редактирования.

Плагины имеют визуальные интерфейсы для настройки колонок, сортировки и фильтрации, что значительно упрощает работу без необходимости писать код.

Добавление сортировки и фильтров по своим колонкам

Для улучшения админки полезно сделать колонки сортируемыми и добавить фильтры по ним. Это особенно важно для метаполей.

Сделаем колонку «Цена» сортируемой

add_filter('manage_edit-product_sortable_columns', 'wpfreecourses_make_price_sortable');
function wpfreecourses_make_price_sortable($columns) {
    $columns['price'] = 'price';
    return $columns;
}

add_action('pre_get_posts', 'wpfreecourses_price_column_orderby');
function wpfreecourses_price_column_orderby($query) {
    if (!is_admin()) return;
    $orderby = $query->get('orderby');
    if ('price' === $orderby) {
        $query->set('meta_key', 'price');
        $query->set('orderby', 'meta_value_num');
    }
}

Этот код сделает колонку с метаполем «Цена» сортируемой по числовому значению.

Добавление фильтра по таксономии

add_action('restrict_manage_posts', 'wpfreecourses_filter_by_product_cat');
function wpfreecourses_filter_by_product_cat() {
    global $typenow;
    if ($typenow === 'product') {
        $taxonomy = 'product_cat';
        $selected = isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : '';
        $info_taxonomy = get_taxonomy($taxonomy);
        wp_dropdown_categories(array(
            'show_option_all' => "Все {$info_taxonomy->label}",
            'taxonomy'        => $taxonomy,
            'name'            => $taxonomy,
            'orderby'         => 'name',
            'selected'        => $selected,
            'show_count'      => true,
            'hide_empty'      => true,
        ));
    }
}

add_filter('parse_query', 'wpfreecourses_convert_filter_query');
function wpfreecourses_convert_filter_query($query) {
    global $pagenow;
    $post_type = isset($_GET['post_type']) ? $_GET['post_type'] : '';
    $taxonomy = 'product_cat';
    $q_vars = &$query->query_vars;
    if ($pagenow == 'edit.php' && $post_type == 'product' && isset($_GET[$taxonomy]) && is_numeric($_GET[$taxonomy]) && $_GET[$taxonomy] != 0) {
        $term = get_term_by('id', $_GET[$taxonomy], $taxonomy);
        if ($term) {
            $q_vars[$taxonomy] = $term->slug;
        }
    }
}

Так можно отфильтровать записи по выбранной категории таксономии.

Практические советы по оптимизации работы с колонками

Чтобы админка оставалась удобной и быстрой, соблюдайте несколько правил:

  • Добавляйте только необходимые колонки, чтобы не загромождать интерфейс.
  • Используйте сортировку и фильтры, чтобы быстро находить нужные записи.
  • Для сложных проектов применяйте плагины с визуальным управлением.
  • Проверяйте производительность при добавлении сложных запросов в колонки.

Оптимизация колонок значительно экономит время администраторов и редакторов сайта, позволяя работать эффективнее.

WooCommerce: автоматическое удаление неактивных заказов
29.05.2026
Автоматическое создание подписок на курсы в WordPress
05.04.2026
Как создать автоматический импорт курсов в WordPress для образовательного сайта
04.01.2026
WooCommerce: автоматическое удаление неактивных заказов по срокам
04.06.2026
WooCommerce: как автоматически изменять ставку НДС по типам товаров
09.07.2026