WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

wp_handle_sideload() WP 2.6.0

Перемещает временный файл в папку uploads. Обертка для _wp_handle_upload(). Указывает название события: wp_handle_sideload. Событие можно изменить в переменной $overrides['action'].

_wp_handle_upload() — обрабатывает PHP загрузку файла для WordPress: очищает название файла(ов), проверяет расширение для mime типов, сохраняет (перемещает) файл в нужную папку в папке uploads.

Для работы функции не в админке нужно подключить файл:

// подключаем нужные нам функции: download_url() и wp_handle_sideload()
require_once ABSPATH . 'wp-admin/includes/file.php';
Используется в: media_handle_sideload().
Работает на основе: _wp_handle_upload()

Хуков нет.

Возвращает

Массив. Ассоциативный массив с параметрами загруженного файла. При неудаче вернет значение $overrides['upload_error_handler'] или массив array( 'error'=>$message ).

Использование

wp_handle_sideload( $file, $overrides, $time );
$file(массив) (обязательный)

Массив с данными файла - аналогичный PHP массиву $_FILES, который передается в POST запросе.

Array (
	[name] => MyFile.txt // берется из формы браузера, поэтому не доверяем
	[type] => text/plain // тип файла. Берется откуда-то из браузера - не доверяем
	[tmp_name] => /tmp/php/php1h4j1o // сам файл - данные файла в файле. Можно доверять
	[error] => UPLOAD_ERR_OK // = 0
	[size] => 123 // размер файла в байтах - 1 КБ = 1024 Байт
)
$overrides(массив/логический)
Ассоциативный массив из name=>value, позволяет изменить параметры по умолчанию.
По умолчанию: false
$time(строка)
Время в формате 'yyyy/mm', используется для построения пути для папки uploads - куда файл будет загружен. Передается в wp_upload_dir() чтобы переписать папку загрузки по умолчанию.
По умолчанию: null

Примеры

#1 Загрузка удаленного файла (с другого сервера) в папку uploads.

Этот пример использует download_url(), чтобы загрузить указанный файл, а затем переместить его в каталог uploads.

// во фронт-энде для работы функции нужен следующий файл: 'wp-admin/includes/file.php'
// подключаем нужные нам функции: download_url() и wp_handle_sideload()
require_once( ABSPATH . 'wp-admin/includes/file.php');

// URL на лого WordPress
$url = 'http://s.w.org/style/images/wp-header-logo.png';
$timeout_seconds = 5;

// загружаем файл во временную папку
$temp_file = download_url( $url, $timeout_seconds );

if( ! is_wp_error( $temp_file ) ){

	// соберем массив аналогичный $_FILE в PHP
	$file = array(
		'name'     => basename($url), // получит: wp-header-logo.png
		'type'     => 'image/png',
		'tmp_name' => $temp_file,
		'error'    => 0,
		'size'     => filesize($temp_file),
	);

	$overrides = array(
		// скажем WP не искать поля формы, которые обычно должны быть. По умолчанию true
		// Мы загружаем файл с удаленного сервера, поэтому полей формы у нас нет...
		'test_form' => false,

		// если установить true, то WP будет пропускать пустые файлы. Не рекомендуется.
		'test_size' => true,

		// Правильно загруженный файл пройдет эту проверку.
		// Поэтому не нужно изменять этот параметр.
		'test_upload' => true, 
	);

	// перемещаем временный файл в папку uploads
	$results = wp_handle_sideload( $file, $overrides );

	if( ! empty($results['error']) ){
		// Добавьте сюда обработчик ошибок
	}
	else {

		$filename = $results['file']; // полный путь до файла
		$local_url = $results['url']; // URL до файла в папке uploads
		$type = $results['type']; // MIME тип файла

		// делаем что-либо на основе полученных данных
	}

}

Код wp handle sideload: wp-admin/includes/file.php WP 4.8

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

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

Из метки: upload (файловая система file загрузка)

Еще из раздела: Загрузка (upload)

wp_handle_sideload Комментариев нет

Здравствуйте, !

Ваш комментарий