wp_handle_upload

Обрабатывает загрузку файла через $_FILES. Очищает название файла, проверяет расширение файла (на основе mime типа) и сохраняет файл в соответствующий каталог wp-content/uploads/....

media_handle_upload() работает напрямую с суперглобальным массивом $_FILES, это не всегда удобно. Иногда удобнее указать данные файла в массиве и обработать их, для этого используйте media_handle_sideload().

Работает на основе PHP функции move_uploaded_file().

Хуков нет.

Возвращает

При успешной загрузке возвращает ассоциативный массив данных. При неудаче, возвращает $overrides['upload_error_handler'] или array( 'error'=>$message ).

Массив возвращаемый при успешной загрузке:

$movefile = wp_handle_upload( $file, $overrides, $time );
$file(массив) (обязательный)
Элемент массива $_FILES, который содержит массив данных о принятом файле (название, тип, размер, временное расположение). Функцию нужно вызывать при загрузке каждого файла. Параметр передается по ссылке (&$file), поэтому нужно передавать переменную.
$overrides(массив)

Ассоциативный массив, чтобы перезаписать дефолтные переменные используемые в функции (переменные извлекаются так: extract( $overrides, EXTR_OVERWRITE )).

Чтобы произошла реальная загрузка файла обязательно нужно указать параметр ‘test_form’ => FALSE, в противном случае это будет просто тестирование работы формы.

Переменные которые можно перезаписать в этом параметре:

  • upload_error_handler – название функции обработки ошибок. По умолчанию ‘wp_handle_upload_error’;

  • unique_filename_callback – Название функции по уникализации переданного имени файла. По умолчанию null;

  • Параметры тестирования:
    • test_form – По умолчанию true;
    • test_size = По умолчанию true;
    • test_upload = По умолчанию true;
      Если перезаписать эти параметры, то нужно передать $ext и $type:
    • test_type – По умолчанию true;
    • mimes – По умолчанию false;

По умолчанию: false

$time(строка)
Время в формате ГГГГ/мм. Указанное время передается в функцию wp_upload_dir().
По умолчанию: null

Примеры

#1 Загрузка файла

Пример использования функции. Показывает как загрузить файл в каталог WP “uploads”, который передается в форме. Пусть так выглядит наша форма:

<?php
function wp_handle_upload( &$file, $overrides = false, $time = null ) {
	/*
	 *  $_POST['action'] must be set and its value must equal $overrides['action']
	 *  or this:
	 */
	$action = 'wp_handle_upload';
	if ( isset( $overrides['action'] ) ) {
		$action = $overrides['action'];
	}

	return _wp_handle_upload( $file, $overrides, $time, $action );
}