Описание функции media_handle_upload()
Функция media_handle_upload() обрабатывает загрузку файлов, загружая их в медиабиблиотеку WordPress и создавая объект WP_Attachment для загруженного файла. Эта функция обычно используется при обработке форм загрузки файлов в админке. Она также выполняет проверку типа загружаемого файла и создает миниатюры изображений, если это необходимо.
Функция возвращает ID вложения на успешной загрузке, что позволяет разработчикам работать с загруженным файлом дальше.
Параметры
$file_id
Тип: string
Обязательный: Да
Описание: Имя поля в форме загрузки файла
Возможные значения:
$post_id
Тип: int
Обязательный: Нет
Описание: ID записи, к которой будет прикреплено вложение
Возможные значения:
$overrides
Тип: array
Обязательный: Нет
По умолчанию: array()
Описание: Массив с параметрами для переопределения стандартного поведения
Возможные значения:
Возвращаемое значение
Тип: int|WP_Error
Описание: Возвращает ID вложения или объект WP_Error в случае ошибки
Возможные значения:
• ID загруженного вложения при успешной загрузке
• WP_Error при возникновении ошибки
Примеры использования
Простой пример загрузки изображения через форму
$attachment_id = media_handle_upload('my_image_upload');
if (is_wp_error($attachment_id)) {
echo 'Ошибка загрузки: ' . $attachment_id->get_error_message();
} else {
echo 'Изображение загружено! ID: ' . $attachment_id;
}
Не забудьте добавить проверку на ошибки
Загрузка изображения и привязка его к записи с ID 123
$attachment_id = media_handle_upload('my_image_upload', 123);
ID записи, к которой будет прикреплено изображение
Пример обработки ошибок при загрузке файла
$attachment_id = media_handle_upload('my_image_upload');
if (is_wp_error($attachment_id)) {
// Обработка ошибки
error_log($attachment_id->get_error_message());
echo 'Ошибка: ' . $attachment_id->get_error_message();
}
Логи ошибок помогут в диагностике
Загрузка файла через AJAX в плагине с использованием media_handle_upload
function my_custom_upload_handler() {
if (!empty($_FILES['my_image_upload'])) {
$attachment_id = media_handle_upload('my_image_upload');
// Дополнительная логика после загрузки
}
}
add_action('wp_ajax_my_custom_upload', 'my_custom_upload_handler');
Не забудьте зарегистрировать AJAX обработчик
Безопасность
Валидация входных данных: Функция обрабатывает валидацию загруженных файлов
Санитизация: WordPress автоматически очищает входные данные
Рекомендации: Убедитесь, что форма защищена от CSRF-атак, используйте nonce
— Связанные функции
Обрабатывает загрузку файла, но не создает вложение
Создает объект вложения в базе данных
— Хуки
Фильтрует директорию загрузки перед загрузкой файла
— Примечания
– Ограничения
Поддерживаются только определенные форматы файлов (например, изображения, PDF)
– Частые проблемы
- Ошибка при загрузке слишком больших файлов
- Проблемы с правами доступа к директориям загрузки