WP_HANDLE_SIDELOAD() Function in WordPress: Usage, Parameters, and Examples

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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *