Как удалить и заблокировать загрузочные файлы в WordPress

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

Почему важно контролировать загрузочные файлы в WordPress

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

  • Безопасность: Загрузка потенциально опасных файлов (.exe, .php и др.) может привести к взлому сайта.
  • Оптимизация: Большое количество ненужных файлов может занимать много места на сервере, замедлять бэкапы и восстановление.
  • Управление: Контроль типов загружаемых файлов упрощает администрирование и предотвращает ошибки пользователей.

Поэтому важно иметь инструменты и методы для удаления нежелательных файлов и блокировки их загрузки.

Удаление загрузочных файлов из библиотеки WordPress

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

Функция wpmark_delete_upload_file($attachment_id) удалит вложение и связанные с ним файлы:

function wpmark_delete_upload_file($attachment_id) {
    if (!current_user_can('delete_post', $attachment_id)) {
        return new WP_Error('forbidden', 'Недостаточно прав для удаления файла.');
    }
    // Удаляем вложение и физический файл
    $deleted = wp_delete_attachment($attachment_id, true);
    if ($deleted) {
        return true;
    } else {
        return new WP_Error('delete_failed', 'Не удалось удалить файл.');
    }
}

Пример использования:

$result = wpmark_delete_upload_file(123);
if (is_wp_error($result)) {
    echo 'Ошибка: '.$result->get_error_message();
} else {
    echo 'Файл успешно удалён';
}

Такой подход позволяет удалять файлы из базы и сервера безопасно.

Блокировка загрузки файлов по типу через фильтр

Для запрета загрузки определённых типов файлов применим фильтр upload_mimes. Ниже пример, который запрещает загрузку файлов с расширениями .exe и .bat:

function wpmark_disable_certain_mimes($mimes) {
    unset($mimes['exe']);
    unset($mimes['bat']);
    return $mimes;
}
add_filter('upload_mimes', 'wpmark_disable_certain_mimes');

Так мы исключаем нежелательные расширения из разрешённых. Можно добавить любые расширения по потребности.

Блокировка по размеру файла

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

function wpmark_limit_upload_size($file) {
    $max_size = 2 * 1024 * 1024; // 2 МБ
    if ($file['size'] > $max_size) {
        $file['error'] = 'Файл слишком большой. Максимальный размер 2 МБ.';
    }
    return $file;
}
add_filter('wp_handle_upload_prefilter', 'wpmark_limit_upload_size');

Это остановит загрузку слишком больших файлов.

Использование плагинов для управления загрузками

Если хочется избежать кода, можно использовать плагины:

  • WP Upload Restriction — простой плагин для ограничения типов и размеров загружаемых файлов.
  • Clearfy Pro (https://wpshop.ru/clearfy-pro/?utm_source=wpmark.ru&utm_medium=article&utm_campaign=kak-udalit-i-zablokirovat-zagruzochnye-fajly-v-wordpress) — расширенный функционал для оптимизации, в том числе управление загрузками и безопасность.

Плагины позволяют быстро настроить ограничения без программирования.

Как автоматически удалять временные и ненужные файлы

В процессе работы WordPress и плагинов на сервере могут накапливаться временные или устаревшие файлы. Их удаление важно для поддержания порядка и освобождения места.

Можно создать функцию wpmark_cleanup_temp_uploads(), которая удалит файлы из временной папки:

function wpmark_cleanup_temp_uploads() {
    $upload_dir = wp_upload_dir();
    $temp_dir = $upload_dir['basedir'] . '/temp';
    if (!is_dir($temp_dir)) {
        return;
    }
    $files = glob($temp_dir . '/*');
    $now = time();
    foreach ($files as $file) {
        if (is_file($file)) {
            $file_age = $now - filemtime($file);
            if ($file_age > 86400) { // старше 24 часов
                unlink($file);
            }
        }
    }
}
// Можно запускать по крону или вручную
add_action('wp_footer', 'wpmark_cleanup_temp_uploads');

Такой подход помогает автоматически поддерживать чистоту загрузок.

Итоговые рекомендации

Для эффективного управления загрузочными файлами в WordPress советую:

  • Ограничивать типы файлов через фильтр upload_mimes.
  • Ограничивать размер файлов с помощью wp_handle_upload_prefilter.
  • Удалять ненужные файлы программно через wp_delete_attachment.
  • Использовать проверенные плагины для удобства.
  • Автоматизировать очистку временных файлов.

Так вы повысите безопасность сайта, сэкономите место на сервере и упростите администрирование.

Как избежать проблем с производительностью при массовом импорте товаров в WooCommerce
07.05.2026
Как автоматизировать создание резервных копий WordPress без плагинов
18.01.2026
Как создать автоматический снимок экрана страницы в WordPress
28.01.2026
Решение проблемы безопасности WordPress при использовании плагинов
06.12.2025
Как создать собственный фильтровый плагин WordPress с примерами кода
05.01.2026