wp_handle_upload()

19 февраля, 2025
Обработка загрузки файлов в WordPress с помощью wp_handle_upload(): параметры, примеры, безопасность
Быстрая навигация по записи

Описание функции wp_handle_upload()

Функция wp_handle_upload() обрабатывает загрузку файлов, проверяет их на ошибки и обеспечивает правильное сохранение. Она используется для обработки файлов, загружаемых пользователями через формы или API. Функция автоматически выполняет валидацию, проверку MIME-типа и создание метаданных для загружаемых файлов.

Эта функция часто используется в плагинах и темах для обработки пользовательских загрузок.

Параметры

$file

Тип: array

Обязательный: Да

Описание: Массив данных о загружаемом файле, полученный из $_FILES

Возможные значения:

name: Имя файла

type: MIME-тип

tmp_name: Временное имя файла на сервере

error: Код ошибки

size: Размер файла в байтах

$overrides

Тип: array

Обязательный: Нет

По умолчанию: array()

Описание: Массив параметров для настройки поведения загрузки

Возможные значения:

test_form: 1,

unique_filename_callback: Функция для генерации уникального имени файла

Возвращаемое значение

Тип: array|WP_Error

Описание: Массив данных о загруженном файле или объект WP_Error в случае ошибки

Возможные значения:

• Массив с данными о загруженном файле (url, path, type и т.д.)

• WP_Error при ошибке загрузки

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

Простой пример обработки загрузки файла

				
					$file = $_FILES['upload_file'];
$result = wp_handle_upload($file, array('test_form' => false));
if (isset($result['error'])) {
    echo 'Ошибка: ' . $result['error'];
} else {
    echo 'Файл загружен: ' . $result['url'];
}
				
			

Загрузка файла выполняется без проверки формы

Загрузка файла с кастомной функцией для уникального имени

				
					$file = $_FILES['upload_file'];
$args = array('unique_filename_callback' => 'wp_unique_filename');
$result = wp_handle_upload($file, $args);
				
			

Используется функция wp_unique_filename для генерации имени

Проверка на наличие ошибок после загрузки файла

				
					$file = $_FILES['upload_file'];
$result = wp_handle_upload($file);
if (is_wp_error($result)) {
    echo 'Ошибка: ' . $result->get_error_message();
} else {
    echo 'Файл загружен: ' . $result['url'];
}
				
			

Используется is_wp_error для проверки результата

Безопасность

Валидация входных данных: Проверка входных данных на наличие ошибок и корректности

Санитизация: Функция автоматически очищает данные перед обработкой

Рекомендации: Проверяйте разрешенные MIME-типы и размеры файлов

— Связанные функции

Фильтрует данные файла перед загрузкой

Обрабатывает загрузку файла, который уже существует на сервере

— Хуки

Фильтрует данные файла перед загрузкой

Фильтрует результаты после обработки загрузки

— Примечания

– Ограничения

Не поддерживает загрузку файлов с недопустимыми MIME-типами

– Частые проблемы

  • Ошибка при загрузке из-за превышения максимального размера файла
  • Проблемы с правами доступа к директории загрузки

Оставить комментарий

Нужна помощь с WordPress WooCommerce плагинами темой оптимизацией ?

Упрощаем сложное, создаем впечатляющее!
100% без риска
Нет обязательств по найму
Бесплатная оценка
1900 ₽
6 разных демо
Cоздать сайт для блога на WordPress. Идеально подходит для сайта новостей блогов и журналов, обеспечивая комфортное и приятное взаимодействие , полностью на русском языке

Поможем вывести Ваш бизнес на новый уровень!

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

Добро пожаловать!

Авторизуйтесь, чтобы продолжить

или

Забыли пароль? Восстановить

* Если аккунта у Вас еще нет, то он будет создан автоматически

Давайте составим техническое задание!
100% без риска
Нет обязательств по найму
Бесплатная оценка стоимости
Здравствуйте! Я асистент на основе искусственного интеллекта. Вы можете общаться со мной, как с человеком — задавайте вопросы, описывайте свои идеи и требования.

С удовольствием помогу вам составить техническое задание для вашего WordPress проекта. Если Вам нужна техническая поддержка по купленному у нас плагину или шаблону, то создайте тикет в личном кабинете.

Выберите подходящий вариант или опишите свою задачу в свободной форме, и я помогу вам составить четкий план действий, для оценки стоимости нашими разработчиками! 😊