Присваивание категорий, тегов и таксономий к загружаемым файлам
СКАЧАТЬ ИСХОДНЫЕ ФАЙЛЫ
Вас когда-нибудь удивляло, что WordPress не позволяет вам присвоить категории и теги для загруженных вами изображений и других медиа файлов?
Представьте, как это могло бы быть полезно: стало бы возможным создавать динамические галереи изображений, посвященных определенным местам или темам (пейзажи, абстракция и т.д.), либо делать листинги с огромным количеством страниц в формате PDF.
Хорошая новость состоит в том, что этого легко добиться. Вы можете добавить категории и теги к загруженным файлам, путем добавления простого кода к файлу функций вашей темы, либо с помощью плагина.
Также, этим способом вы можете создать кастомную - то есть созданную вами - таксономию (custom taxonomy), которая будет применена к загруженным файлам.
В данной статье, прочтение которой займет менее 10 минут, я покажу как это сделать!
Согласно WordPress Codex:
Таксономия (синоним слова систематика) это одно из тех слов, о котором большинство людей никогда ничего не слышало. Если коротко, то таксономия позволяет группировать объекты.
Например, у меня есть несколько различных видов животных. Я могу сгруппировать их вместе по некоторым характеристикам и затем присвоить полученным группам имена. Эти группы будут называться биологическими классами, или таксономией Линнея (по имени шведского физиолога Карла Линнея).
В WordPress же, таксономия это механизм группировки записей (ссылок, кастомных записей и т.д.).
Для успешного усвоения материала данной статьи вам понадобится:
- Установленный WordPress;
- Доступ к файлу функций вашей темы, либо разрешение на создание и загрузку плагинов для нее (если вы выберете способ с плагином);
- Текстовый редактор.
Подготовительная часть: экран библиотеки файлов
Как можно заметить, экран библиотеки файлов практически пустой и не имеет возможностей добавления категорий, тегов или таксономий:

По умолчанию, у вас нет доступа к функциям создания категорий или тегов – но такое положение дел можно изменить.
Создание категорий для загруженных файлов
Первым шагом является разрешение присваивания категорий для загруженных файлов. Это можно сделать с помощью функции register_taxonomy_for_object_type(). В файл плагина или functions.php вашей темы, добавьте следующие строки:
function wptp_add_categories_to_attachments() {
register_taxonomy_for_object_type( 'category', 'attachment' );
}
add_action( 'init' , 'wptp_add_categories_to_attachments' );
Сохраните файл и обновите экран библиотеки файлов. Вы увидите, что категории теперь доступны:

Также, появилась колонка, отображающая категории, присвоенные объектам в списке:

Прикрепление тегов к загруженным файлам
Если вы предпочитаете работать с тегами вместо категорий (или с обоими), то можете использовать соответствующую функцию.
Добавьте следующий код в свой плагин или файл функций темы:
// разрешение добавления тегов к загружаемым файлам
function wptp_add_tags_to_attachments() {
register_taxonomy_for_object_type( 'post_tag', 'attachment' );
}
add_action( 'init' , 'wptp_add_tags_to_attachments' );
Как и в примере выше, данный код добавляет возможность присваивать теги на экране библиотеки файлов:

Соответственно, появится и колонка «Tags» на экране библиотеки файлов:

Двигаемся дальше: создание таксономий для загруженных файлов
В некоторых случаях, вы, возможно, не захотите работать с имеющимися категориями или тегами, когда будете заниматься классификацией загруженных вами файлов. В таком случае, вы можете зарегистрировать кастомную таксономию и применить ее к загруженному файлу.
В примере выше, я добавил тег к изображению, чтобы показать, как это делается. Представим, что я хочу создать иерархическую таксономию под названием «Locations», которую я смог бы использовать для классификации и отображения всех моих изображений.
Это можно сделать с помощью функции register_taxonomy(). Добавьте следующие строки в ваш файл функций темы или плагин:
// регистрация новой таксономии для загруженных файлов
function wptp_add_location_taxonomy() {
$labels = array(
'name' => 'Locations',
'singular_name' => 'Location',
'search_items' => 'Search Locations',
'all_items' => 'All Locations',
'parent_item' => 'Parent Location',
'parent_item_colon' => 'Parent Location:',
'edit_item' => 'Edit Location',
'update_item' => 'Update Location',
'add_new_item' => 'Add New Location',
'new_item_name' => 'New Location Name',
'menu_name' => 'Location',
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'query_var' => 'true',
'rewrite' => 'true',
'show_admin_column' => 'true',
);
register_taxonomy( 'location', 'attachment', $args );
}
add_action( 'init', 'wptp_add_location_taxonomy' );
Этот код создаст новую, иерархическую таксономию, которая может быть применена только к загруженным файлам.
Если вы хотите применить её к другим типам контента, то замените параметр «attachment» в функции register_taxonomy() массивом, включающим в себя метки всех типов контента, которые вы хотите включить, например:
register_taxonomy( 'location', array( 'attachment', 'post' ), $args );
Экран библиотеки файлов теперь отображает новую таксономию:

Это произошло потому, что я включил в код аргумент «show_admin_column». Теперь экран библиотеки файлов выглядит так:

Вот и все! Теперь у вас есть категории, теги и кастомные типы записей, которые можно применить к загруженным файлам.
Заключение
Как вы увидели, можно добавить категории и теги к загружаемым медиа файлам, таким как изображения и PDF-файлы, используя функцию register_taxonomy_for_object_type(). Вы также можете создать новую таксономию, используя функцию register_taxonomy() и применяя её к загружаемым файлам.
Применение таксономий (включая категории и теги) для загружаемых файлов может иметь несколько практических применений.
Мы можем:
- Создать собственный шаблон attachment.php для отображения загруженных изображений в стиле галереи, выводя их в зависимости от выбранной категории;
- Создавать шаблоны для определенных таксономий, чтобы отображать загруженные файлы на сайте в различных формах; например, чтобы использовать таксономию «локация», вы можете создать файл шаблона с именем taxonomy-location-uk.php и отобразить архив фотографий из Великобритании;
- Сортировать огромное количество PDF-файлов на сайте, выбрав отображение по теме, отделу, типу файла или любому другому критерию;
- Настроить отображение загруженных файлов в файле шаблона таксономий, в соответствии с указанной датой, используя запросы, полученные от пользователя.
Есть еще множество других вариантов применения этих инструментов. Все это должно помочь вам эффективно работать с загруженными файлами, также как и с записями, будучи в состоянии выводить их на экран различными способами.