WP_HANDLE_SIDELOAD() │ WP 2.6.0
Функция wp_handle_sideload()
является обёрткой для функции _wp_handle_upload()
. Она обрабатывает загрузку файлов из внешних источников и может использоваться для загрузки файлов на сайт с других сайтов.
Параметры функции
Возврат
Функция возвращает массив с данными о загруженном ф��йле. Для подробной информации о значениях, возвращаемых функцией, см. _wp_handle_upload()
.
Использование
wp_handle_sideload( $file, $overrides, $time );
-
$file
(array) (обязательный): Ссылка на один элемент массива$_FILES
. Вызовите эту функцию для каждого загружаемого файла. Подробности доступны в_wp_handle_upload()
. -
$overrides
(array|false): Ассоциативный массив с именами и значениями для переопределения стандартных переменных. Дополнительные сведения см. в_wp_handle_upload()
. По умолчанию: false. -
$time
(string|null): Время в формате 'yyyy/mm'. По умолчанию: null.
Примеры использования
Пример 1: Загрузка удалённого файла на текущий сайт
Этот пример демонстрирует, как использовать функцию download_url()
для загрузки файла с другого сайта и перемещения его в папку загрузок вашего сайта.
// Чтобы использовать функции 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(
/*
* Сообщаем WordPress, чтобы он не проверял поля формы POST,
* которые обычно присутствуют. По умолчанию true, но так как мы
* загрузили файл с удалённого сервера, полей формы не будет.
*/
'test_form' => false,
);
// Перемещение временного файла в папку загрузок
$results = wp_handle_sideload( $file, $overrides );
if ( ! empty($results['error']) ) {
// Здесь можно добавить обработку ошибок
} else {
$filename = $results['file']; // полный путь к файлу
$local_url = $results['url']; // URL к файлу в папке загрузок
$type = $results['type']; // MIME тип файла
// Здесь можно выполнить дальнейшие действия на основе полученных данных
}
}
Пример 2: Переименование загружаемого файла
Если вы хотите переименовать загружаемый файл и используете класс PHP, это можно сделать следующим образом:
class My_Class {
public function my_custom_upload() {
// Получаем информацию о файле
$file = isset( $_FILES ) ? $_FILES : array();
// Например, это изображение
$allowed_mimes = array(
'jpg|jpeg|jpe' => 'image/jpeg',
'gif' => 'image/gif',
'png' => 'image/png',
);
$uploaded_file = wp_handle_sideload( $file['image'], array(
'test_form' => false,
'mimes' => $allowed_mimes,
'unique_filename_callback' => array( $this, 'rename_uploaded_file' ),
)
);
}
public static function rename_uploaded_file( $dir, $name, $ext ) {
return 'some_string' . $name . $ext; // Изменяем имя файла
}
}
Примечания
- Дополнительную информацию смотрите в
_wp_handle_upload()
.
Изменения
- С версии 2.6.0: добавлено в WordPress.
Другие функции
Функция wp_handle_sideload()
тесно связана с другими функциями загрузки, такими как:
download_url()
media_handle_sideload()
media_handle_upload()
media_sideload_image()
size_format()
wp_check_filetype()
wp_check_filetype_and_ext()
wp_convert_hr_to_bytes()
wp_get_upload_dir()
wp_handle_upload()
wp_max_upload_size()
wp_upload_bits()
Эти функции могут быть полезны, если вы работаете с загрузкой файлов в WordPress.