Применяем рубрики, метки и произвольные таксономии к медиа файлам
Вас когда-либо огорчал тот факт, что WordPress не позволяет присваивать рубрики или метки к вашим изображениям и другим загруженным медиа файлам?
Представьте себе, насколько полезным шагом это было бы: вы могли бы создать динамические галереи изображений из отдельных расположений или отдельных типов (ландшафты, абстракции и т.д.), или вы могли бы создать страницы списков для сайтов с большим количеством PDF-вложений.
Прекрасные новости – присвоить рубрики и метки к медиа файлам можно, и достаточно просто. Вы можете присваивать рубрики и метки к вашим вложениям, добавив простой код к файлу functions.php вашей темы; также можете создавать произвольные таксономии, которые будут применяться к вложениям.
В данном руководстве я покажу вам, как это осуществить всего за 10 минут (или даже меньше).
Экран редактирования медиафайлов
В настоящий момент экран редактирования медиа файлов практически пуст, в нем нет никаких рубрик, меток или таксономий:
По умолчанию вы не можете выбирать какие-либо существующие метки или рубрики – однако мы поправим это.
Применение рубрик к вложениям
На первом шаге мы подключим рубрики для вложений. Сделать это можно, воспользовавшись функцией 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' );
Сохраните файл и обновите экран редактирования медиа файлов. Вы увидите, что теперь рубрики стали доступны:
Также появился столбец с рубриками на экране редактирования медиа файлов:
Примечание: в данном руководстве я буду работать с изображениями, однако данный подход работает для всех типов прикрепляемых файлов.
Применение меток к вложениям
Если вы предпочитаете работать с метками вместо рубрик (или, возможно, и с метками, и с рубриками), то в таком случае вы можете использовать ту же самую функцию. Добавьте следующий код в свой файл functions.php темы:
// apply tags to attachments function wptp_add_tags_to_attachments() { register_taxonomy_for_object_type( 'post_tag', 'attachment' ); } add_action( 'init' , 'wptp_add_tags_to_attachments' );
Как и в предыдущем примере, на экране редактирования медиа файлов появится новый раздел – на сей раз с метками:
Также появится столбец с метками:
Идем дальше – создание произвольной таксономии для вложений
В некоторых случаях вы, возможно, не захотите работать с существующими категориями или метками для классификации своих вложений, и вам понадобится произвольная таксономия, которую нужно будет зарегистрировать и применить к типу записей attachment.
В примере выше я добавил метку к своему изображению, чтобы показать, где оно было сделано. Допустим, я хочу создать иерархическую таксономию Locations, которую я буду использовать для классификации и вывода всех своих изображений.
Сделать это можно с помощью функции register_taxonomy(). Добавьте следующее в свой файл functions.php темы:
// register new taxonomy which applies to attachments 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 для вывода прикрепленных изображений в стиле галерей, используя архивные страницы для вывода изображений из разных рубрик или мест.
- Создание шаблонов для определенных таксономий или термов с целью вывода вложений по-разному на сайте – к примеру, используя таксономию location, вы можете создать шаблон taxonomy-location-uk.php для вывода архивов изображений из Великобритании, добавив к ним определенную стилизацию.
- Категоризация PDF вложений на сайте с большим их количеством, а также использование архивных страниц для вывода файлов по теме, разделам, медиа типу и другим факторам, которые требуются вам в вашем проекте.
- В шаблоне для текущей таксономии вы можете вывести ссылку на все прикрепления с запрошенным термом сразу под списком записей с указанным термом, дополненным прямыми ссылками на прикрепления – вы можете использовать два произвольных запроса в вашем шаблоне.
Есть еще много потенциальных приложений для этой техники. Вы можете работать с прикрепленными файлами точно так же, как с обычными записями или произвольными типами записей, совершая запрос к ним и выводя архивы с ними различными путями.
Источник: code.tutsplus.com