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

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

Источник: WP.tutsplus.com

Вам понравился материал?

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

12 комментариев

сначала новые
по рейтингу сначала новые по хронологии
Алексей

Здравствуйте, прописал Ваш код:

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 чтобы аттачменты появились наряду с постами?

Сергей

Добрый день. Есть вопрос, опишу вкратце задачу чтоб проще было меня понять)) Каждая запись представляет собой набор фото с объекта. Фотки требуется разделить по группам. Можно ли в запись сделать динамическое добавление этих текстовых полей? Допустим ткнул на кнопочку "+" и ниже появилось такое же текстовое поле, сложил туда пачку фоток, требуется еще группа, снова тыкаем "+"... И, раз это группы и как-то надо их определять что и где, то к каждому этому полю свою метку бы, ну или устроил бы вариант просто с готовым раскрывающимся списком вместо меток, возле каждого текстового поля. Вот было бы идеально, как мне кажется :) Или может есть еще мысли как подобное реализовать? Может вопросы глупые, просто с WP только пытаюсь подружиться)) Заранее спасибо за любую инфу :)

Сергей

Advanced Custom Fields отличный плагин, с поставленной задачей справился на отлично!

Сергей

Автор, пожалуйста, скажи как ты сделал в конце сайта в рубрике похожие посты(незнаю как правильно назвать) такие картинки с заокругленными концами. Боже, я посмотрел во вкладке темы там тоже самое, например надпись на картинке GOODWEB. Очень прошу, подскажи как такие сделать и что бы можна было написать текст возле них. У меня вордпресс

Есть масса бесплатных плагинов для вставки блока с похожими постами. Сделайте поиск wordpress related posts. А эти картинки - они берутся из миниатюр каждого поста, закругленные они потому, что они закруглялись в фотошопе, вот и весь секрет.

Андрей

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

Евгений

Можно ли создать таксономию без slug? Чтобы запись имела адрес сайт/запись?
И если уже существует таксономия с slug, как ее убрать? Сначала убрать ее в коде, а потом заменить адреса в базе данных?

Александр

Подскажите как выбрать картинки с определенными тэгами, чтобы потом их в галлерее использовать?

Скажите как добавить еще одни метки для записи? Можете натолкнуть на идею? Мне нужно чтобы помимо существующего поля с метками было еще отдельное

Если вкратце, нужно создавать дополнительный мета-бокс и свою кастомную таксономию. Более подробно мы писали об этом в предыдущих уроках, посмотрите в поиске.

Здравствуйте,подскажите ,как сделать тоже самое для постов. Под каждой меткой выводится список всех постов этой метки.

Возможно, этот урок поможет вам вывести список постов:

http://wpcafe.org/tutorials/sozdaem-short-kod-dlya-vyivoda-spiska-zapisey-s-raznyimi-parametrami/