Выводим колонку “Размер” для библиотеки медифайлов в админке CMS WordPress

25.03.2019

Задача такая: просмотреть несколько сайтов и найти изображения, которые не оптимизированны для web’а, так как есть файлы весом более 5МБ. Как оптимизировать правильно изображения для сайта я писал в этой статье.

Итак, мы не будем просматривать на хостинге все папки и искать там большие картинки, мы не будем просматривать все медиафайлы подряд в поисках больших изображений, это все долго и как-то совсем грустно. Нам бы помогла вкладка “Размеры” в админке в разделе Медиафайлы. Но такой колонки там нет, поэтому придется создать ее.

Самый простой путь – добавить код в файл functions.php, но:

  • у нас несколько сайтов, и править шаблоны ради небольшого функционала не совсем правильно;
  • к некоторым сайтам у меня нет доступа по ftp, а через админку править код тоже неправильно;
  • некоторые шаблоны обновляются, и поэтому вносить изменения в код не желательно, они просто перетрутся при обновлении.

Значит, нужно взять этот код:

add_filter( 'manage_media_columns', 'sk_media_columns_filesize' );
/**
 * Filter the Media list table columns to add a File Size column.
 *
 * @param array $posts_columns Existing array of columns displayed in the Media list table.
 * @return array Amended array of columns to be displayed in the Media list table.
 */
function sk_media_columns_filesize( $posts_columns ) {
  $posts_columns['filesize'] = __( 'File Size', 'my-theme-text-domain' );

  return $posts_columns;
}

add_action( 'manage_media_custom_column', 'sk_media_custom_column_filesize', 10, 2 );
/**
 * Display File Size custom column in the Media list table.
 *
 * @param string $column_name Name of the custom column.
 * @param int    $post_id Current Attachment ID.
 */
function sk_media_custom_column_filesize( $column_name, $post_id ) {
  if ( 'filesize' !== $column_name ) {
    return;
  }

  $bytes = filesize( get_attached_file( $post_id ) );

  echo size_format( $bytes, 2 );
}

add_action( 'admin_print_styles-upload.php', 'sk_filesize_column_filesize' );
/**
 * Adjust File Size column on Media Library page in WP admin
 */
function sk_filesize_column_filesize() {
  echo
  '<style>
  .fixed .column-filesize {
    width: 10%;
  }
  </style>';
}

и добавить его в самописный плагин, который можно скачать здесь, установить этот плагин на своем сайте просто загрузив его через админку, Активировать и наблюдать там новую колонку “Размер” в Медиафайлах.

Какие преимущества решения данной задачи через плагин, а не с помощью внесения кода в functions.php:

  • код шаблона остается нетронутым, то есть шаблон не изменяется и всегда готов к обновлениям;
  • не нужно иметь подключение в FTP, не нужно править файл functions.php через админку, что очень критично, так как любая опечатка в этом файле приведет к падению сайта, и без доступа по FTP вы ничего не сможете сделать, поэтому я настоятельно не рекомендую править что-то в functions.php если у вас нет доступа к сайту по FTP;
  • время на установку и активирование плагина занимает меньше минуты;
  • в любой момент можно отключить или включить этот функционал на своем сайте;
  • ну и просто это более эстетично, если вы являетесь разработчиком.

Выводим колонку Размер для библиотеки медифайлов в админке CMS WordPress

Благодарность этому парню Sridhar Katakam.

Рекомендую к прочтению:

Один комментарий к “Выводим колонку “Размер” для библиотеки медифайлов в админке CMS WordPress”

Оставить комментарий