Функция wp_handle_upload() в WordPress: руководство по загрузке файлов

Функция 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!

Leave a Reply

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