Как удалить или скрыть файлы из медиабиблиотеки WordPress

Работа с медиабиблиотекой WordPress требует не только загрузки и хранения файлов, но и их грамотного управления. Иногда возникает задача удалить определённые файлы из медиабиблиотеки, не удаляя их физически с сервера, или же полностью скрыть часть файлов от отображения в админке. В этой статье мы подробно разберём, как это можно сделать с помощью кода и плагинов, а также какие ситуации требуют таких решений.

Почему надо уметь удалять и скрывать файлы из медиабиблиотеки WordPress

Медиабиблиотека WordPress отображает все файлы, загруженные через неё, а также привязанные к записям и страницам. Однако бывают случаи, когда:

  • Нужно убрать устаревшие или временные файлы из админки, чтобы не загромождать интерфейс;
  • Файлы необходимы для работы сайта, но не должны быть доступны для редактирования или удаления;
  • Требуется скрыть медиафайлы, связанные с определёнными пользователями или ролями;
  • Нужно удалить записи о файлах из медиабиблиотеки, но оставить их на сервере для использования в других целях.

Рассмотрим, как решить эти задачи.

Как программно скрыть файлы из медиабиблиотеки по типу или метаданным

Основной инструмент для изменения вывода медиабиблиотеки — фильтр ajax_query_attachments_args. С его помощью можно модифицировать WP_Query, который получает список медиафайлов в админке.

Например, чтобы скрыть файлы с определённым расширением, добавим в functions.php темы или в собственный плагин следующий код:

function wpupload_hide_attachments_by_extension($query_args) {
    // Получаем все фильтры, если они есть
    $meta_query = isset($query_args['meta_query']) ? $query_args['meta_query'] : [];

    // Добавляем условие исключить файлы с расширением .tmp
    $meta_query[] = [
        'key' => '_wp_attached_file',
        'value' => '.tmp',
        'compare' => 'NOT LIKE'
    ];

    $query_args['meta_query'] = $meta_query;
    return $query_args;
}
add_filter('ajax_query_attachments_args', 'wpupload_hide_attachments_by_extension');

В этом примере мы исключаем файлы с расширением .tmp. Аналогично можно фильтровать файлы по другим признакам, например, по кастомным метаданным.

Скрытие файлов по пользовательским ролям

Иногда нужно, чтобы часть файлов видели только администраторы, а для редакторов и авторов они были скрыты. Добавим проверку роли пользователя:

function wpupload_hide_attachments_by_user_role($query_args) {
    if (!current_user_can('administrator')) {
        $meta_query = isset($query_args['meta_query']) ? $query_args['meta_query'] : [];
        $meta_query[] = [
            'key' => '_wpupload_hidden',
            'compare' => 'NOT EXISTS'
        ];
        $query_args['meta_query'] = $meta_query;
    }
    return $query_args;
}
add_filter('ajax_query_attachments_args', 'wpupload_hide_attachments_by_user_role');

Здесь предполагается, что в медиафайлах с мета _wpupload_hidden установлено, что файл скрыт. Администраторы видят все.

Как удалить записи о файлах из медиабиблиотеки, оставив файлы на сервере

Если вы хотите освободить медиабиблиотеку от неиспользуемых записей, но не удалять физически файлы (например, если они подключаются напрямую или используются в кастомных шаблонах), можно удалить посты вложений из базы данных.

Пример функции для удаления вложений по ID:

function wpupload_delete_attachment_post($attachment_id) {
    // Удаляем запись вложения без удаления файла
    wp_delete_attachment($attachment_id, false);
}

Параметр false отключает удаление самого файла. Будьте осторожны, чтобы не получить «мертвые» ссылки.

Массовое удаление записей вложений по условию

Например, удалить все вложения с расширением .log из медиабиблиотеки, оставив файлы:

function wpupload_bulk_delete_attachments_log() {
    $args = [
        'post_type' => 'attachment',
        'posts_per_page' => -1,
        'meta_query' => [
            [
                'key' => '_wp_attached_file',
                'value' => '.log',
                'compare' => 'LIKE'
            ]
        ],
        'fields' => 'ids'
    ];
    $attachments = get_posts($args);
    foreach ($attachments as $attachment_id) {
        wp_delete_attachment($attachment_id, false);
    }
}

Не забудьте запускать такие операции с бэкапом базы и файлов.

Плагины для управления медиабиблиотекой с расширенными возможностями скрытия и удаления

Если вы не хотите писать код, обратите внимание на следующие плагины, которые позволяют гибко управлять медиафайлами:

  • Media Library Assistant — расширяет стандартную медиабиблиотеку, добавляет фильтры и массовые операции;
  • Enhanced Media Library — позволяет создавать таксономии для файлов и фильтровать их по типам и метаданным;
  • FileBird — визуально организует файлы по папкам, что помогает скрывать и структурировать медиа;
  • WP Media Folder (платный) — расширенные опции управления, в том числе права доступа к папкам.

Для более продвинутого контроля стоит рассмотреть плагин Clearfy Pro, который оптимизирует работу с медиа, включая скрытие и оптимизацию.

Советы по безопасности при удалении и скрытии файлов в WordPress

Удаление записей вложений без удаления файлов может привести к накоплению мусора на сервере. Регулярно проверяйте папки загрузок и удаляйте неиспользуемые файлы вручную или с помощью скриптов.

При скрытии файлов через фильтры внимательно тестируйте права доступа, чтобы не допустить утечки приватных данных.

Всегда делайте резервные копии базы и файлов перед массовыми операциями.

Итог: гибкое управление файлами медиабиблиотеки WordPress

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

Как автоматически удалять файлы WooCommerce после отмены заказа без плагинов
25.05.2026
Как установить ограничение на тип файлов при загрузке в WordPress
06.03.2026
Как использовать метод WPUpload Ajax для загрузки файлов в WordPress
08.12.2025
Как использовать WP Upload Dir для работы с файлами в WordPress
01.12.2025
Как автоматически удалять файлы WooCommerce после отмены заказа
21.05.2026

wp upload - это директория в WP для загрузки файлов. Подробнее про загрузку файлов в админку можно почитать на этой странице.