Вас когда-либо огорчал тот факт, что 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
Дима, привет! Установил Yet Another Related Posts Plugin для того чтобы показывать похожие страницы медиафайлов (хттп://мусите.ри/glavnaya/attachment/marka-5-size), но почему-то не плагин не работает, хотя игрался с настройками критерии похожести заголовки, тексты, рубрики, метки. И заметил, что у медиафайлов нет меток. Может из-за этого? Если да, то у тебя в статье указано как сделать, но я не понял, где надо править. Добавил вышеуказаные коды в функция.пхп — перестал работать. Версия ВП 4.1. Заранее благодарю за ответ!
YARPP разве работает с медиафайлами?
«Related posts, pages, and custom post types».
Про медиафайлы нет ни слова.
В настройках плагина есть выбор: Automatically display related content from YARPP Basic on: Записи, Страницы, Медиафайлы
Он выводит контент (связанные материалы) на страницах медиафайлов. Для каждого медиафайла можно задавать вывод на отдельной странице. Точно так же можно задавать вывод связанных материалов и в RSS фидах.
Дима, хм, очень интересно, что-то в голове логика плагина не срастается. :)Если я правильно понял (ещё не тестил), то: установив похожести для записей и страниц — эти похожести можно вывести на страницу медиафайлов? Если так, то как? :)
Я сам такой вариант вывода не тестировал, но, как я понимаю:
1. Ставим вывод для медиафайлов: Automatically display related content from YARPP Basic on Mediafiles
2. Переходим на страницу вложения (Можно через админку: Медиафайлы — Библиотека. Далее наводим курсор на любое изображение и жмем Перейти).
3. По идее должен появиться список похожих записей под изображением.
Дима, понял, спасибо! Протестирую. Отпишу.
Дима, не работает. Сделал, согласно статье, рубрики и метки для медиафайлов. Плюс сделал рубрики и метки для страниц. Не работает плагин со страницами медафайлов, а вот с страницами — заработал (это хорошо, но нужно именно страницы медиафайлов). Вот думаю, что может по принципу того кода для страниц сделать для медиафайлов, т.е. я к тому, что код в данной статье не совершенен? :) Правда я не знаю php, ни код ВП. Дима, а как тебе скинуть ссылку на статью, где код для страниц. Если тебя не затруднит — глянешь? Хотя можешь просто в гугле набрать «wordpress как добавить метки для страниц» — первая ссылка. Заранее благодарю!
У меня все работает. Поставил на тестовый сайт последнюю версию YARPP, задал вывод для медиафайлов, специально загрузил изображение, перешел на его страницу и вот результат:
Это я открыл страницу вложения. YARPP пишет, что нет похожих записей, поскольку у меня на тестовом сайте нет статей.
У меня точно также всё, как у тебя на картинке. Но, плагин туда ничего не выводит, ни записи, ни страницы, ну и ни то, что хотелось страницы медиафайлов.
Медиафайлы он не будет выводить в любом случае. Он не распространяется на них. А записи и страницы будет выводить, когда появятся подходящие. Но это уже надо смотреть по его алгоритму, как он определяет схожие записи.
Дима, поигрался я с настройками.
Как работают похожести: в ВП есть записи, страницы, медиафайлы. Похожесть применяется отдельно, для записей — похожесть записей, для страниц — похожести страниц, для медиафайлов — свои похожести. Т.е. не будет такого, что при создании записи, в самой записи будут применяться похожести записей и/или страниц, будет только похожесть записей. Данная надстройка:
Automatically display related content from YARPP Basic on Mediafiles
отвечает только лишь за то: вкл/выкл работу плагина для записи и т.д. или нет. А не за то: выводить похожести записей на страницах, или выводить похожести страниц в записях, или выводить похожести записей и похожести страниц в медиафайлах. :)
А значит, если есть выбор Медиафайлы, значит плагин должен работать с медиафайлами. :) Но, почему-то не работает.
Не пойму, как он работает с медиафайлами. Сколько не загружал новых изображений с разными подписями, заголовками, ничего не выдает в похожих.
Дима, я о том же. Спрашивается зачем есть выбор Медиафайлы. :))) И что самое интересное — интернет молчит, никто об этом не пишет, пытался найти инфу — не нашёл. Я тут задумался, а действительно ли страницы медиафайлов — страницы, может это записи? Может из-за этого не работает. Хотя, я игрался и так и сяк, ничего не получилось. Попробую ещё раз. :)))
Что-то я написал не подумав. Если были записями, то работало, т.к. записи работают. М-да… Загадка… Может код глянуть, что эта галка Медиафайлы делает. Как там говорят: на заборе xyz написано, а там дрова лежат, только здесь наоборот — дрова лежат, но xyz… )))
Думаю да, придется смотреть код плагина. А то нигде нет ни одной инструкции, для чего вообще эта галочка нужна.
Здравствуйте, прописал Ваш код:
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 чтобы аттачменты появились наряду с постами?
добрый день!
Я тоже задумался поставить картинки в рубрики, а потом обнаружил что в некоторых рубриках они уже стоят(сайт не так давно обслуживаю) и начал разбираться как же они (картинки) там оказались. плагин стоит «Изображения таксономии» к рубрике добавляются картинки (в консоли) которые я хочу добавить, а те которые добавлены http://prntscr.com/erjn57 они в описании рубрики выведены кодом , я попробовал его вставить в описание той рубрики в которую хочу сам вставить картинку, ничего не выводится. добавил плагин который Вы рекомендуете, тоже ничего. Помогите разобраться))
Добрый день.
Попробовал добавить таксономию, скопировал Ваш код. Почему то в админке таксономия отображается полем для ввода текста как у меток, а не выбором чекбоксами как у рубрик. Что я делаю не так?
Нашел. Для выбора вида нужно воспользоваться настройкой «meta_box_cb».
post_categories_meta_box — показывать как категории
post_tags_meta_box — показывать как метки.
Если указать false, то метабокс будет отключен вообще.
Отлично. Наша помощь не понадобилась :)