Как добавить медиафайлам в WordPress рубрики и метки?

Как добавить медиафайлам в WordPress рубрики и метки?

5 мая 2015 1 735 11

Рассказываю, как быстро сделать таксономию для медиафайлов в Вордпресс.

20 новейших лендингов для Вордпресс 2018 года

Медиа библиотека WordPress за время своего существования претерпела массу изменений и различных улучшений. Действительно, система управления медиафайлами в WordPress построена на самом высочайшем уровне. Пожалуй, единственный недостаток, с которым вы можете столкнуться — это отсутствие в библиотеке какой-либо таксономии. Для большинства сайтов это совсем не критично. Но если вы регулярно публикуете большое количество медиа материала (фото, видео, аудио и т.п.), вы обязательно зададитесь вопросом: как медиафайлам в медиа библиотеке WordPress присвоить рубрики или/и метки.

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

1. Плагин Enhanced Media Library

Плагин Enhanced Media Library устанавливается и активизируется стандартным образом. После его активизации, вы увидите в разделе Медиафайлы некоторые изменения. А именно новый пункт Media Categories. А в самой Библиотеке вы увидите новый выпадающий список рубрик ваших медиафайлов. Разумеется, сначала их нужно создать. Делается это самым стандартным способом в разделе Media Categories. Речь о котором шла чуть выше.

Естественно, плагин в отличие от того же сниппета даст вам более широкие возможности управления и каталогизации медиа-вложений. Например, функции пакетной обработки. Что при большом количестве материала будет весьма полезно. Кроме этого, в настройках плагина вы можете ввести для медиафайлов метки, кастомную таксономию, новые MIME-типы документов и т.д.

Кроме всего прочего, в Enhanced Media Library заявлена полная совместимость с некоторым другими популярными плагинами. Такими как: Advanced Custom Fields (ACF), WooCommerce, Meta Slider и Search & Filter.

2. Сниппет


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

Сниппеты традиционно добавляются в файл 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' );

Можно пойти еще дальше и ввести для медиафайлов новую таксономию. Например, «Места» (Locations).

// Вводим новую таксономию «Места» для медиафайлов
function wptp_add_location_taxonomy() {
$labels = array(
'name' => 'Места',
'singular_name' => 'Location',
'search_items' => 'Поиск мест',
'all_items' => 'Все места',
'parent_item' => 'Родительское место',
'parent_item_colon' => 'Родительское место:',
'edit_item' => 'Редактировать место',
'update_item' => 'Обновить место',
'add_new_item' => 'Добавить новое место',
'new_item_name' => 'Имя нового места',
'menu_name' => 'Места',
);
$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' );

Добавив все три сниппета, результат будет примерно следующим.

Как видим, возможности WordPress в части медиа-контента ограничиваются лишь нашим воображением.

Конечно, вы можете отказаться от использования нативной галереи WordPress и использовать сторонних монстров вроде NextGen Gallery с мощнейшим функционалом. Но это далеко не всегда целесообразно и очень редко оправдывает средства.

Всё самое новое и интересное из мира Вордпресс в моём Телеграм-канале. Подписываемся!

Популярное в этом месяце

Подпишитесь на рассылку и получайте новые материалы на электронную почту

Иван Данилин
Автор: Иван Данилин

Практикующий веб-разработчик, специализируюсь на платформе Вордпресс.

Комментарии
  1. Здравствуйте, прописал Ваш код:

    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 чтобы аттачменты появились наряду с постами?
    • Доброй ночи! Я думаю, проще поправить основной цикл.
      Допишите в functions.php такой код:

      function ext_query() {
      global $wp_query;
      $wp_query->query_vars[‘post_type’] = array( ‘attachment’ );
      $wp_query->query_vars[‘post_status’] = array( null );
      return $wp_query;
      }

      add_action(‘parse_query’, ‘ext_query’);
      • Спасибо, Иван!
        Вложения появились. НО! пропали ссылки на посты.
        А надо, чтобы в архиве (рубрике, метке) были вместе и посты и вложения.
        Что не так сделал?
      • Спасибо, Иван!
        Вложения появились. НО! пропали ссылки на посты.
        А надо, чтобы в архиве (рубрике, метке) были вместе и посты и вложения.
        Что не так сделал?

        Забавно также то, что на страницах меток и рубрик, которые не присвоены
        ни одному аттачменту, исчезло вообще все: и посты и описания. Я для
        пробы добавил медиафайл в рубрику, появилось описание и этот медиафайл, а
        посты не появились.
        Где-то косяк…
        • Пардон, немного не то.
          Попробуйте такой вариант:

          function ext_query( $query ) {
          $query->set( ‘post_type’, array( ‘post’, ‘attachment’ ) );
          $query->set( ‘post_status’, array( ‘publish’, ‘inherit’ ) );
          return $query;
          }
          add_filter( ‘pre_get_posts’, ‘ext_query’ );
          • Прекрасно!
            Все работает, спасибо!
          • вот только теперь все медиафайлы появились в разделе «Записи» в админке. Это нормально?
            И поиск по постам и по страницам не работает, вордпресс выдает «неверный тип записи»
          • ограничьте ф-ю архивами и главной, например

            function ext_query( $query ) {
            if(is_home() || is_archive()) {
            $query->set( ‘post_type’, array( ‘post’, ‘attachment’ ) );
            $query->set( ‘post_status’, array( ‘publish’, ‘inherit’ ) );
            return $query;
            }
            }
            add_filter( ‘pre_get_posts’, ‘ext_query’ );

            с поиском и фильтрами проблем не наблюдаю.
          • забавно. работает. в админке вроде порядок, поиск и фильтры заработали. Теперь на главной и на страницах архивов исчезли горизонтальные меню.
          • При добавлении этого кода пропадает меню.
          • Чтоб меню не исчезало его тоже нужно передать. Может кому понадобится:
            function ext_query( $query ) {
            if(is_home() || is_archive()) {
            $query->set( ‘post_type’, array(‘post’, ‘nav_menu_item’, ‘attachment’));
            $query->set( ‘post_status’, array( ‘publish’, ‘inherit’ ) );
            return $query;
            }
            }
            add_filter( ‘pre_get_posts’, ‘ext_query’ );
Добавить комментарий

Услуги фрилансеров по фиксированной цене — 500 р.
Подробнее