Фильтр manage_media_columns
позволяет изменять список столбцов в таблице медиафайлов в админ-панели WordPress. С его помощью можно добавлять новые колонки, удалять или изменять существующие, что упрощает настройку медиа-библиотеки под нужды проекта. Этот хук особенно полезен для добавления информации о медиафайлах, такой как ID, размер файла или другие метаданные.
apply_filters( ‘manage_media_columns’, string[] $posts_columns, bool $detached )
Фильтр manage_media_columns
принимает два параметра:
$posts_columns
— массив, где ключи представляют идентификаторы колонок, а значения — заголовки.$detached
— логическое значение, которое указывает, содержатся ли в списке медиафайлы, не прикрепленные ни к одной записи (по умолчаниюtrue
).
Хук manage_media_columns
работает в связке с manage_media_custom_column
, который позволяет выводить данные для созданных колонок.
Пример 1: Добавление колонки с ID вложения
В этом примере добавляется новая колонка для отображения ID каждого медиафайла в таблице медиа-библиотеки.
add_filter( 'manage_media_columns', 'add_media_id_column' );
add_action( 'manage_media_custom_column', 'display_media_id_column', 10, 2 );
/**
* Добавляет новую колонку с ID медиафайла.
*
* @param array $columns Существующие колонки.
* @return array Обновленный массив колонок.
*/
function add_media_id_column( $columns ) {
// Добавляем колонку ID перед остальными
$columns = array_slice( $columns, 0, 1, true )
+ [ 'media_id' => 'ID' ]
+ array_slice( $columns, 1, null, true );
// Добавляем стили для узкой колонки ID
add_action( 'admin_footer', 'media_id_column_style' );
return $columns;
}
/**
* Выводит ID медиафайла в новой колонке.
*
* @param string $column Название колонки.
* @param int $post_id ID медиафайла.
*/
function display_media_id_column( $column, $post_id ) {
if ( 'media_id' === $column ) {
echo $post_id;
}
}
/**
* Добавляет стили для узкой колонки ID.
*/
function media_id_column_style() {
echo '<style>#media_id { width: 50px; }</style>';
}
Этот код добавляет колонку «ID» в начале таблицы, отображает ID каждого файла, а также задаёт ширину колонки через стили, чтобы она оставалась компактной.
Пример 2: Добавление колонки с размером файла
Этот пример демонстрирует, как создать колонку, показывающую размер файла для каждого элемента в медиа-библиотеке.
add_filter( 'manage_media_columns', 'add_media_size_column' );
add_action( 'manage_media_custom_column', 'display_media_size_column', 10, 2 );
/**
* Добавляет колонку с размером файла.
*
* @param array $columns Существующие колонки.
* @return array Обновленный массив колонок.
*/
function add_media_size_column( $columns ) {
$columns['file_size'] = 'Размер файла';
return $columns;
}
/**
* Выводит размер файла в колонке.
*
* @param string $column Название колонки.
* @param int $post_id ID медиафайла.
*/
function display_media_size_column( $column, $post_id ) {
if ( 'file_size' === $column ) {
$file_path = get_attached_file( $post_id );
$file_size = filesize( $file_path );
// Преобразуем размер в KB или MB для удобства
if ( $file_size ) {
echo size_format( $file_size, 2 );
} else {
echo 'Неизвестно';
}
}
}
Здесь мы добавляем колонку «Размер файла» и выводим размер каждого файла. Если размер не определён, выводится «Неизвестно».
Пример 3: Добавление колонки с датой загрузки медиафайла
Этот пример показывает, как создать колонку для отображения даты загрузки медиафайла, что может быть полезно для сортировки и поиска файлов по дате.
add_filter( 'manage_media_columns', 'add_upload_date_column' );
add_action( 'manage_media_custom_column', 'display_upload_date_column', 10, 2 );
/**
* Добавляет колонку с датой загрузки.
*
* @param array $columns Существующие колонки.
* @return array Обновленный массив колонок.
*/
function add_upload_date_column( $columns ) {
$columns['upload_date'] = 'Дата загрузки';
return $columns;
}
/**
* Выводит дату загрузки медиафайла.
*
* @param string $column Название колонки.
* @param int $post_id ID медиафайла.
*/
function display_upload_date_column( $column, $post_id ) {
if ( 'upload_date' === $column ) {
$upload_date = get_the_date( 'd.m.Y', $post_id );
echo esc_html( $upload_date );
}
}
Этот код добавляет колонку с датой загрузки файла и отображает её в формате дд.мм.гггг
.
Пример 4: Вывод типа MIME файла
В этом примере добавляется колонка для отображения типа MIME каждого файла в таблице медиа-библиотеки, что может быть полезно для идентификации типов загружаемых файлов.
add_filter( 'manage_media_columns', 'add_mime_type_column' );
add_action( 'manage_media_custom_column', 'display_mime_type_column', 10, 2 );
/**
* Добавляет колонку с MIME-типом.
*
* @param array $columns Существующие колонки.
* @return array Обновленный массив колонок.
*/
function add_mime_type_column( $columns ) {
$columns['mime_type'] = 'MIME тип';
return $columns;
}
/**
* Выводит MIME тип медиафайла.
*
* @param string $column Название колонки.
* @param int $post_id ID медиафайла.
*/
function display_mime_type_column( $column, $post_id ) {
if ( 'mime_type' === $column ) {
$mime_type = get_post_mime_type( $post_id );
echo esc_html( $mime_type );
}
}
Теперь таблица медиафайлов отображает MIME-тип для каждого файла, что помогает различать файлы по их типам.
Заключение
Хук manage_media_columns
предоставляет широкие возможности для настройки таблицы медиафайлов в WordPress, что делает управление медиафайлами удобнее и эффективнее. Используя этот хук вместе с manage_media_custom_column
, можно создавать и настраивать колонки под конкретные требования сайта.