Хук manage_media_custom_column
используется в WordPress для заполнения пользовательских колонок в таблице медиабиблиотеки. С его помощью можно добавить в админку новые столбцы с уникальной информацией для каждого медиафайла.
Хук manage_media_custom_column
срабатывает для каждой пользовательской колонки, добавленной в таблицу медиабиблиотеки. Он позволяет выводить данные для каждой строки (медиафайла) в этой колонке. Название колонки передается в виде параметра $column_name
, а идентификатор медиафайла — в виде $post_id
.
do_action( 'manage_media_custom_column', string $column_name, int $post_id );
$column_name
— название пользовательской колонки.$post_id
— ID вложения (медиафайла).
Добавление пользовательской колонки
Чтобы добавить новую колонку в таблицу медиафайлов, используется фильтр manage_media_columns
. В нём можно указать название и метку колонки, которая затем будет обработана через manage_media_custom_column
.
Пример: добавление столбца с ID медиафайла
Этот пример демонстрирует, как добавить колонку с ID медиафайла и вывести его значение для каждой строки.
add_filter( 'manage_media_columns', 'add_custom_column_in_media_table' );
add_action( 'manage_media_custom_column', 'fill_custom_column_in_media_table', 10, 2 );
/**
* Добавляем пользовательскую колонку с ID медиафайла.
*
* @param array $columns Существующие колонки.
* @return array Массив с добавленной колонкой.
*/
function add_custom_column_in_media_table( $columns ) {
// Добавляем колонку в начало таблицы с меткой "ID файла"
$columns = array_merge( ['media_id' => 'ID файла'], $columns );
return $columns;
}
/**
* Заполняем пользовательскую колонку с ID медиафайла.
*
* @param string $column_name Имя колонки.
* @param int $post_id ID медиафайла.
*/
function fill_custom_column_in_media_table( $column_name, $post_id ) {
if ( 'media_id' === $column_name ) {
echo (int) $post_id;
}
}
В результате в таблице медиафайлов появится новая колонка под названием «ID файла», где для каждого медиафайла будет отображён его уникальный ID.
Пример: вывод размеров изображения
Допустим, вы хотите добавить колонку, которая будет показывать размеры изображения (например, 800×600 пикселей). Этот код добавляет колонку и выводит размеры изображения для каждого элемента.
add_filter( 'manage_media_columns', 'add_dimensions_column' );
add_action( 'manage_media_custom_column', 'fill_dimensions_column', 10, 2 );
/**
* Добавляем колонку "Размеры" в таблицу медиафайлов.
*
* @param array $columns Существующие колонки.
* @return array Массив колонок с добавленной.
*/
function add_dimensions_column( $columns ) {
$columns['image_dimensions'] = 'Размеры';
return $columns;
}
/**
* Заполняем колонку "Размеры" значениями.
*
* @param string $column_name Имя колонки.
* @param int $post_id ID медиафайла.
*/
function fill_dimensions_column( $column_name, $post_id ) {
if ( 'image_dimensions' === $column_name ) {
$metadata = wp_get_attachment_metadata( $post_id );
if ( isset( $metadata['width'], $metadata['height'] ) ) {
echo esc_html( "{$metadata['width']}x{$metadata['height']}" );
} else {
echo '—';
}
}
}
Теперь в медиабиблиотеке для каждого изображения будет отображаться его разрешение, например, «800×600».
Пример: вывод MIME-типа файла
Следующий пример демонстрирует, как создать колонку, в которой будет отображаться MIME-тип файла. Это может быть полезно для быстрого определения типа файла (например, image/jpeg
или application/pdf
).
add_filter( 'manage_media_columns', 'add_mime_type_column' );
add_action( 'manage_media_custom_column', 'fill_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_name Имя колонки.
* @param int $post_id ID медиафайла.
*/
function fill_mime_type_column( $column_name, $post_id ) {
if ( 'mime_type' === $column_name ) {
$mime_type = get_post_mime_type( $post_id );
echo esc_html( $mime_type ? $mime_type : 'Неизвестно' );
}
}
В этом примере колонка будет содержать MIME-тип для каждого медиафайла, загруженного в медиабиблиотеку WordPress.
Стилизация пользовательских колонок
Иногда добавляемым колонкам требуется уникальная стилизация. Можно добавить CSS через хук admin_head
, чтобы управлять внешним видом колонок.
add_action( 'admin_head', 'custom_media_column_styles' );
/**
* Добавляем стили для пользовательских колонок.
*/
function custom_media_column_styles() {
echo '<style>
.column-media_id { width: 50px; }
.column-image_dimensions { width: 100px; }
.column-mime_type { width: 120px; }
</style>';
}
Этот код добавляет ширину для пользовательских колонок media_id
, image_dimensions
и mime_type
, делая их более компактными.
Заключение
Хук manage_media_custom_column
предоставляет простой способ добавления и заполнения пользовательских колонок в медиабиблиотеке WordPress.