Вас не раздражает, что WordPress не позволяет присвоить рубрику или метки вашим изображениям или загруженным файлам?
Представьте, как это могло бы быть полезно: вы могли бы создать динамические галереи изображений из отдельных мест или отдельных типов (пейзажи, абстракция), или вы могли бы создать страницы-списки для сайтов с большим количеством прикрепленных PDF файлов.
| Скачать исходники |
Хорошая новость: это на удивление просто сделать! Вы сможете добавить рубрики и метки к вашим прикрепленным файлам, добавив простой код в файл functions.php вашей темы или плагин, вы также сможете создать свою таксономию, которая будет применима к прикрепленным файлам.
В этом руководстве я покажу вам, как это сделать и очень быстро — это займет не больше 10 минут!
Что такое таксономия?
Как сказано в WordPress Codex:
Таксономия — одно из слов, которые большинство людей никогда не слышат и не используют. В принципе, таксономия — способ группировать вещи.
Например, есть набор разных видов животных. Я могу группировать их вместе по разным характеристикам и затем присвоить этим группам имена. С этим большинство сталкивается на школьных уроках биологии и это не что иное, как таксономия.
В WordPress "таксономия" — механизм группирования для некоторых записей (или ссылок, или типов постов).
Что вам нужно, чтобы применить это руководство
Вам понадобится:
- Установленный WordPress.
- Доступ к файлу functions.php вашей темы или FTP доступ, чтобы вы могли создать или загрузить плагин.
- Текстовый редактор.
Обратите внимание: Я рекомендую для добавления этих возможностей на сайте создавать плагин, так как он не зависит от темы и может понадобиться вам, если вы решите сменить тему в будущем. Конечно, добавление кода в файл темы тоже будет работать.
Подготовка: Редактирование медиа
Страница редактирования медиафайлов сама по себе достаточно бедна, там нет рубрик, меток или таксономий:
По умолчанию у вас нет возможности выбрать какую-то существующую рубрику или метку — но вы можете это изменить.
Применение рубрик
Первый шаг — включение рубрики для прикрепленных файлов. Вы можете сделать это с помощью функции 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' );
Сохраните файл и обновите страницу редактирования медиа. Вы увидите, что рубрики теперь доступны:
Также колонка для рубрик появится в медиа-библиотеке, как видите:
Применение меток
Если вы предпочитаете работать с метками, а не с рубриками (или и с тем, и с другим), вы можете использовать ту же функцию. Добавьте следующий код в файл темы или плагина:
// 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(). Добавьте в файл темы или плагина следующее:
// 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', страница медиа-библиотеки тоже ее включает:
Все! Теперь у вас есть рубрики, метки и свой тип записи для работы с прикрепленными медиафайлами.
Итог и использование этого подхода
Как вы увидели, вы можете применить рубрики и метки к прикрепленным медиафайлам, используя функцию register_taxonomy_for_object_type(). Вы также можете создать новую таксономию с помощью register_taxonomy() и применить ее к прикрепленным файлам (только к ним или также к другим типам контента).
Применение таксономий (в т.ч. рубрик и меток) к прикрепленным файлам можно использовать на практике:
- Создать свой шаблон attachment.php чтобы отображать прикрепленные изображения в виде галереи, используя страницы архива для отображения изображений из разных рубрик.
- Создать файл шаблона для отдельных таксономий или терминов для разного отображения прикрепленных изображений — например используя таксономию ‘location’ вы можете создать файл шаблона location-uk.php чтобы показывать архив изображений из UK в каком-то специфическом стиле.
- На сайте с большим количеством прикрепленных PDF файлов вы можете разбить их по категориям и использовать страницы архива для отображения этих файлов по теме, разделу, типу — так, как будет нужно вашему проекту.
- В файле шаблона для определенной таксономии помимо списка записей по теме отображать список на все прикрепленные файлы с прямыми ссылками на файлы — вам нужно будет использовать для этого всего два запроса.
Для всего этого есть много применений — в принципе это значит, что вы можете работать с прикрепленными файлами точно так же, как с записями, делая запросы и отображая архивы множеством способов.
Комментарии к записи: 14
Здравствуйте,подскажите ,как сделать тоже самое для постов. Под каждой меткой выводится список всех постов этой метки.
Возможно, этот урок поможет вам вывести список постов:
https://hostenko.com/wpcafe/tutorials/sozdaem-short-kod-dlya-vyivoda-spiska-zapisey-s-raznyimi-parametrami/
Скажите как добавить еще одни метки для записи? Можете натолкнуть на идею? Мне нужно чтобы помимо существующего поля с метками было еще отдельное
Если вкратце, нужно создавать дополнительный мета-бокс и свою кастомную таксономию. Более подробно мы писали об этом в предыдущих уроках, посмотрите в поиске.
Подскажите как выбрать картинки с определенными тэгами, чтобы потом их в галлерее использовать?
Можно ли создать таксономию без slug? Чтобы запись имела адрес сайт/запись?
И если уже существует таксономия с slug, как ее убрать? Сначала убрать ее в коде, а потом заменить адреса в базе данных?
Здравствуйте, Вы можете привести код, который зарегистрирует новый раздел с метками для постов. Я имею введу, чтоб метки новые отображались не в медиафайлах, а записях.
Автор, пожалуйста, скажи как ты сделал в конце сайта в рубрике похожие посты(незнаю как правильно назвать) такие картинки с заокругленными концами. Боже, я посмотрел во вкладке темы там тоже самое, например надпись на картинке GOODWEB. Очень прошу, подскажи как такие сделать и что бы можна было написать текст возле них. У меня вордпресс
Есть масса бесплатных плагинов для вставки блока с похожими постами. Сделайте поиск wordpress related posts. А эти картинки — они берутся из миниатюр каждого поста, закругленные они потому, что они закруглялись в фотошопе, вот и весь секрет.
Добрый день. Есть вопрос, опишу вкратце задачу чтоб проще было меня понять)) Каждая запись представляет собой набор фото с объекта. Фотки требуется разделить по группам. Можно ли в запись сделать динамическое добавление этих текстовых полей? Допустим ткнул на кнопочку «+» и ниже появилось такое же текстовое поле, сложил туда пачку фоток, требуется еще группа, снова тыкаем «+»… И, раз это группы и как-то надо их определять что и где, то к каждому этому полю свою метку бы, ну или устроил бы вариант просто с готовым раскрывающимся списком вместо меток, возле каждого текстового поля. Вот было бы идеально, как мне кажется :) Или может есть еще мысли как подобное реализовать? Может вопросы глупые, просто с WP только пытаюсь подружиться)) Заранее спасибо за любую инфу :)
Advanced Custom Fields отличный плагин, с поставленной задачей справился на отлично!
Здравствуйте, прописал Ваш код:
function wptp_add_categories_to_attachments() {
register_taxonomy_for_object_type( 'category', 'attachment' );
}
add_action( 'init' , 'wptp_add_categories_to_attachments' );
// 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' );
в файле functions.php
в медиафайлах появилсь рубрики и метки. Но беда в том, что на страницах самих рубрик и меток не выводятся ссылки на медиафайлы.
Какой код дописать в archive.php чтобы аттачменты появились наряду с постами?
Добрый день.
А как сделать вывод списка вложений для определенной метки/рубрики?
То есть метка прописалась у вложения, но когда по ней переходишь — ничего не находится.
Спасибо
Спасибо, очень хорошая статья!
Помогите плиз мне в медиатеке сделать выпадающее меню для рубрик или меток изображений! |Тоесть я добавил рубрики и метки для картинок, и теперь хочу чтобы вверху у меня был выпадающий список в котором я могу выбрать соответствующую рубрику! Заранее благодарен! PS- не хочу использовать дополнительные плагины, хочу вывести через файл function.php