Фильтр 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, можно создавать и настраивать колонки под конкретные требования сайта.
