Функция wp_handle_upload()
Функция wp_handle_upload() предназначена для обработки загружаемых файлов в WordPress. Она служит оберткой для функции _wp_handle_upload() и позволяет удобно загружать файлы на сервер.
Как это работает?
Эта функция работает с событиями, которые перехватываются через действие wp_handle_upload. Вы можете использовать её для загрузки файлов через форму на вашем сайте.
Возвращаемое значение
Функция возвращает массив. Для получения подробной информации о возвращаемых данных ознакомьтесь с документацией по функции _wp_handle_upload().
Применение
Вот базовый пример использования функции wp_handle_upload:
wp_handle_upload( $file, $overrides, $time );
Где:
- $file (array) (обязательный) — это массив, представляющий файл, который вы хотите загрузить. Этот массив передается по ссылке.
- $overrides (array|false) — ассоциативный массив для переопределения значений по умолчанию. Если вы не хотите ничего менять, передайте
false.- По умолчанию: false
- $time (string|null) — строка, определяющая временные метки в формате 'yyyy/mm'. Если не указано, по умолчанию используется
null.
Примеры
Пример 1: Загрузка одного файла
Вот как можно создать фо��му для загрузки файла:
А вот код, который обрабатывает загрузку файла:
if ( wp_verify_nonce( $_POST['fileup_nonce'], 'my_file_upload' ) ) {
if ( ! function_exists( 'wp_handle_upload' ) ) {
require_once ABSPATH . 'wp-admin/includes/file.php';
}
$file = & $_FILES['my_file_upload'];
$overrides = [ 'test_form' => false ];
$movefile = wp_handle_upload( $file, $overrides );
if ( $movefile && empty( $movefile['error'] ) ) {
echo "Файл был успешно загружен.";
print_r( $movefile );
} else {
echo $movefile['error'];
}
}
Пример 2: Загрузка нескольких файлов
Если вам нужно загрузить несколько файлов, вы можете сделать это так:
$files = & $_FILES['my_file_upload'];
foreach ( $files['name'] as $key => $value ) {
if ( empty( $files['name'][ $key ] ) ) {
continue;
}
$file = array(
'name' => $files['name'][ $key ],
'type' => $files['type'][ $key ],
'tmp_name' => $files['tmp_name'][ $key ],
'error' => $files['error'][ $key ],
'size' => $files['size'][ $key ],
);
$movefile = wp_handle_upload( $file, [ 'test_form' => false ] );
if ( $movefile && empty( $movefile['error'] ) ) {
echo "Файл был успешно загружен.";
print_r( $movefile );
} else {
echo $movefile['error'];
}
}
Замечания
- Ознакомьтесь с функцией
_wp_handle_upload()для получения детальной информации о работе функции.
История изменений
- С версии 2.0.0 — функция была добавлена в WordPress.
Код wp_handle_upload
Вот реализация функции wp_handle_upload:
function wp_handle_upload( &$file, $overrides = false, $time = null ) {
$action = 'wp_handle_upload';
if ( isset( $overrides['action'] ) ) {
$action = $overrides['action'];
}
return _wp_handle_upload( $file, $overrides, $time, $action );
}
Эта функция проверяет, установлен ли параметр action в массиве $overrides, и затем передает управление функции _wp_handle_upload().
Теперь вы знаете, как использовать функцию wp_handle_upload для обработки загрузок файлов в WordPress!