Как добавить колонку в таблицу записей админки 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');