В стандартной установке WordPress библиотека медиафайлов устроена достаточно просто: все загруженные изображения, видео и аудиофайлы отображаются в одной ленте без возможности их категоризации или фильтрации по группам. Это становится серьезной проблемой, когда на сайте скапливается огромное количество медиа, а нужно быстро находить нужные файлы и эффективно управлять ими.
Почему важно разделять медиатеку WordPress по категориям
Если вы ведете блог, интернет-магазин или любой другой ресурс с большим количеством визуального контента, разделение медиатеки на категории помогает:
- ускорить поиск нужных файлов;
- упростить процесс редактирования и замены медиа;
- организовать медиа по проектам, разделам сайта или типам контента;
- повысить производительность за счет уменьшения объема данных, загружаемых в интерфейс библиотеки.
Поэтому вопрос категоризации медиафайлов — частая задача для разработчиков и администраторов WordPress.
Как создавать собственные категории для медиа с помощью кода
По умолчанию WordPress не поддерживает категории для вложений, но мы можем добавить их с помощью так называемых таксономий. Пример реализации в functions.php вашей темы или в собственном плагине:
function wpaction_register_media_categories() {
register_taxonomy('media_category', 'attachment', [
'hierarchical' => true,
'label' => 'Категории медиа',
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => ['slug' => 'media-category'],
]);
}
add_action('init', 'wpaction_register_media_categories');Этот код создаст новую иерархическую таксономию media_category, доступную для вложений (медиафайлов). После добавления таксономии вы увидите возможность назначать категории в редакторе медиафайлов.
Добавление категорий к уже загруженным файлам
Чтобы массово назначить категории к существующим файлам, можно использовать следующий пример кода:
function wpaction_assign_category_to_attachments($term_slug) {
$args = [
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_status' => 'inherit',
];
$attachments = get_posts($args);
foreach ($attachments as $attachment) {
wp_set_object_terms($attachment->ID, $term_slug, 'media_category', true);
}
}
// wpaction_assign_category_to_attachments('my-category-slug');<Разкомментируйте вызов функции и замените my-category-slug на нужный ярлык категории, чтобы массово назначить ее.
Плагины для организации медиатеки по категориям
Если вы не хотите писать код, можно использовать плагины, которые реализуют разделение медиатеки по категориям:
- Media Library Categories — простой и бесплатный плагин для добавления таксономий к медиафайлам.
- Enhanced Media Library — более функциональный инструмент с поддержкой категорий, фильтров и типов медиа.
- Clearfy Pro — комплексный плагин оптимизации, включающий расширенные возможности для работы с медиатекой.
Например, после установки Media Library Categories разделение медиафайлов на категории станет доступно сразу, а в админ-панели появятся удобные фильтры.
Как фильтровать медиатеку по категориям в админке WordPress
После добавления таксономии или установки плагина фильтрация происходит через стандартный интерфейс медиатеки. В верхней части страницы появится выпадающий список с категориями. Выбирая нужную, вы увидите только относящиеся к ней файлы.
Чтобы добавить такой фильтр программно, используйте следующий код:
function wpaction_filter_media_by_category() {
$screen = get_current_screen();
if ('upload' !== $screen->id) {
return;
}
$taxonomy = 'media_category';
wp_dropdown_categories([
'show_option_all' => 'Все категории',
'taxonomy' => $taxonomy,
'name' => $taxonomy,
'orderby' => 'name',
'selected' => isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : '',
'hierarchical' => true,
'depth' => 3,
'show_count' => true,
'hide_empty' => true,
]);
}
add_action('restrict_manage_posts', 'wpaction_filter_media_by_category');
function wpaction_filter_media_query($query) {
global $pagenow;
$taxonomy = 'media_category';
if ('upload.php' == $pagenow && !empty($_GET[$taxonomy])) {
$query->query_vars[$taxonomy] = $_GET[$taxonomy];
}
}
add_filter('parse_query', 'wpaction_filter_media_query');Как использовать категории медиа в шаблонах темы
Если вы хотите вывести медиафайлы из определенной категории на страницах сайта, можно использовать WP_Query с параметром таксономии:
$args = [
'post_type' => 'attachment',
'posts_per_page' => 10,
'tax_query' => [
[
'taxonomy' => 'media_category',
'field' => 'slug',
'terms' => 'my-category-slug',
]
],
];
$query = new WP_Query($args);
if ($query->have_posts()) {
echo '<ul>';
while ($query->have_posts()) {
$query->the_post();
$url = wp_get_attachment_url(get_the_ID());
echo '<li><a href="' . esc_url($url) . '">' . get_the_title() . '</a></li>';
}
echo '</ul>';
}
wp_reset_postdata();Это позволит выводить на сайте галереи или списки медиафайлов из выбранных категорий без сторонних плагинов.
Рекомендации по работе с категоризированной медиатекой
Чтобы эффективно поддерживать порядок в медиатеке, советую:
- регулярно добавлять категории при загрузке новых файлов;
- использовать удобные плагиновые решения, если нужно быстро внедрить функционал;
- автоматизировать назначение категорий с помощью кода, например, по типу файла или по проекту;
- организовать резервное копирование базы данных и медиафайлов, чтобы не потерять структуру.
Если вы используете плагин Clearfy Pro, обратите внимание на его настройки, связанные с медиа, которые помогают дополнительно оптимизировать работу с библиотекой.