Присваивание категорий, тегов и таксономий к загружаемым файлам

СКАЧАТЬ ИСХОДНЫЕ ФАЙЛЫ

Вас когда-нибудь удивляло, что WordPress не позволяет вам присвоить категории и теги для загруженных вами изображений и других медиа файлов?

Представьте, как это могло бы быть полезно: стало бы возможным создавать динамические галереи изображений, посвященных определенным местам или темам (пейзажи, абстракция и т.д.), либо делать листинги с огромным количеством страниц в формате PDF.

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

Также, этим способом вы можете создать кастомную — то есть созданную вами — таксономию (custom taxonomy), которая будет применена к загруженным файлам.

В данной статье, прочтение которой займет менее 10 минут, я покажу как это сделать!

Что такое таксономия?

Согласно WordPress Codex:

Таксономия (синоним слова систематика) это одно из тех слов, о котором большинство людей никогда ничего не слышало. Если коротко, то таксономия позволяет группировать объекты.

Например, у меня есть несколько различных видов животных. Я могу сгруппировать их вместе по некоторым характеристикам и затем присвоить полученным группам имена. Эти группы будут называться биологическими классами, или таксономией Линнея (по имени шведского физиолога Карла Линнея).

В WordPress же, таксономия это механизм группировки записей (ссылок, кастомных записей и т.д.).


Для успешного усвоения материала данной статьи вам понадобится:

  • Установленный WordPress;
  • Доступ к файлу функций вашей темы, либо разрешение на создание и загрузку плагинов для нее (если вы выберете способ с плагином);
  • Текстовый редактор.

Примечание: Я рекомендую создать плагин для  реализации задач, описанных в данной статье, потому что такой способ независим от темы, а в будущем вы возможно захотите сменить тему. Но, разумеется, добавление кода к теме в файл functions.php также будет отлично работать.

Подготовительная часть: экран библиотеки файлов

Как можно заметить, экран библиотеки файлов практически пустой и не имеет возможностей добавления категорий, тегов или таксономий:

экран библиотеки файлов

По умолчанию, у вас нет доступа к функциям создания категорий или тегов – но такое положение дел можно изменить.

Создание категорий для загруженных файлов

Первым шагом является разрешение присваивания категорий для загруженных файлов. Это можно сделать с помощью функции 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» на экране библиотеки файлов:

колонка «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-файлов на сайте, выбрав отображение по теме, отделу, типу файла или любому другому критерию;
  • Настроить отображение загруженных файлов в файле шаблона таксономий, в соответствии с указанной датой, используя запросы, полученные от пользователя.

Есть еще множество других вариантов применения этих инструментов. Все это должно помочь вам эффективно работать с загруженными файлами, также как и с записями, будучи в состоянии выводить их на экран различными способами.

Перевод статьи “Applying Categories, Tags and Custom Taxonomies to Media Attachments” был подготовлен дружной командой проекта Сайтостроение от А до Я.