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

Категория: WordPress

Для управления (добавление, удаление, сортировка) колонками в таблице записей и страниц WordPress есть 2 основных наборов хуков - одни хуки добавляют саму колонку, вторые предназначены для получения и вывода значений колонок.

Если вам нужно выводить/сортировать лишь стандартные колонки постов или колонки с meta-данными поста - рекомендую обратить внимание на плагин Admin Columns.

Пример добавления колонки в таблицу

1. Добавляем колонку (заголовок) в таблице админки:

add_filter('manage_posts_columns', 'my_add_post_column_yoast_wpseo_metadesc');
function my_add_post_column_yoast_wpseo_metadesc($columns) {
    $columns['yoast_wpseo_metadesc'] = __('Meta Description');
    return $columns;
}

2. Выводим значение поля для каждой записи:

add_action('manage_posts_custom_column' , 'my_set_posts_column_value_meta_desc', 10, 2);
function my_set_posts_column_value_meta_desc($column, $post_id) {
    if ($column == 'meta_desc') {
        echo get_post_meta($post_id, '_yoast_wpseo_metadesc', true);
    }
}


Пример вывода дополнительной колонки в таблице админки

Отфильтровать колонки:

add_filter('manage_video_posts_columns', 'my_filter_video_columns');
function my_filter_video_columns($columns) {
    return array_merge($columns, [
        'publisher' => __('Publisher'),
        'book_author' =>__( 'Book Author')
    ]);
}

Admin Columns и кастомные колонки

Внимание!

Плагин Admin Columns 2.5.5 использует хук-фильтр manage_edit-${post_type}_columns для добавления колонок, поэтому хуки типа manage_posts_columns и  manage_${post_type}_posts_columns не будут работать так, как вы того ожидаете - они вообще не будут добавлять новые колонки таблицы!

Пример добавления колонки при использовании плагина Admin Columns:

add_filter('manage_edit-video_columns', 'my_add_video_column_yoast_wpseo_metadesc', 201); // 200
function my_add_video_column_yoast_wpseo_metadesc($columns) {
    $columns['yoast_wpseo_metadesc'] = __('Meta Description');
    return $columns;
}
Внимание!

Нужен приоритет выше 200!

Дополнительные хуки

Actions

manage_pages_custom_column - значение ячейки для таблицы постов, fn($column, $post_id)
manage_posts_custom_column - значение ячейки для таблицы страниц, fn($column, $post_id)
manage_{$post_type}_posts_custom_column - значение ячейки для таблицы CPT, fn($column, $post_id)

Filters

manage_pages_columns - управление колонками в таблице для страниц, fn($columns)
manage_posts_columns - управление колонками в таблице для постов, fn($columns)
manage_{$taxonomy_id}_columns - управление колонками в таблице для таксономий
manage_{$post_type}_posts_columns   - управление колонками CPT, fn($columns)
manage_${page}-${post_type}_columns - управление колонками CPT в админке, fn($columns)

Стандартные колонки

$columns['cb'] = '<input type="checkbox" />';
$columns['title'] = __('Title');
$columns['date'] = __('Date');
$columns['publisher'] = __('Publisher');


категория: WordPress