Завантажує переданий у формі файл у папку завантажень WordPress та створює запис про файл у базі даних (додає файл до медіатеки WP).
Працює з глобальною змінною $_FILES , функції потрібно вказати індекс масиву $_FILES , який містить дані про файл, що завантажується і функція сама завантажить файл в папку завантажень WordPress і створить запис про вкладення в таблиці wp_posts в базі даних. У другому параметрі потрібно вказати id запису (поста), до якого завантажений медіафайл має бути прикріплений.
Для роботи цієї функції у фронті потрібно підключити файли:
Індекс елемента масиву $_FILES, який містить дані про прийнятий файл (назва, тип, розмір, тимчасове розташування).
$post_id (число) (обов’язковий)
ID посту, до якого буде прикріплено медіафайл. Якщо не потрібно, щоб файл був прикріплений до посту, вкажіть у параметрі 0 .
$post_data (масив)
Дозволяє перезаписати дані вкладення. Тут вказуються дані які будуть записані в таблицю wp_posts для вкладення: post_parent, post_title, post_excerpt і т.д.
За замовчуванням: array() (за замовчуванням)
$overrides (масив)
Дозволяє змінити поведінку wp_handle_upload() , на основі якої працює поточна функція.
<?php
// Перевіримо захист nonce і що користувач може редагувати цей пост.
if (
isset( $_POST['my_image_upload_nonce'], $_POST['post_id'] )
&& wp_verify_nonce( $_POST['my_image_upload_nonce'], 'my_image_upload' )
&& current_user_can( 'edit_post', $_POST['post_id'] )
) {
// все ОК! Продовжуємо.
// Ці файли мають бути підключені до лицьової частини (фронт-енде).
require_once(ABSPATH. 'wp-admin/includes/image.php');
require_once(ABSPATH. 'wp-admin/includes/file.php');
require_once(ABSPATH. 'wp-admin/includes/media.php');
// Дозволимо WordPress перехопити завантаження.
// не забуваємо вказати атрибут name поля input - 'my_image_upload'
$attachment_id = media_handle_upload( 'my_image_upload', $_POST['post_id'] );
if ( is_wp_error( $attachment_id ) ) {
echo "Помилка завантаження медіафайлу.";
} else {
echo "Медіафайл був успішно завантажений!";
}
} else {
echo "Перевірка не пройдена. Неможливо завантажити файл.";
}
?>
0
#2 Створення множинного завантаження файлів у WordPress
WordPress дозволяє завантажувати відразу кілька файлів навіть із можливістю drag-and-drop, в Адмін-панелі. Якщо вам потрібно додати таку можливість на зовнішню частину сайту, зробити це не так складно. Для цього припустимо, створимо шаблон сторінки (my-upload-page.php) та розмістимо на ньому форму:
Ця форма надсилає дані на свою сторінку (action=””), тому в коді цього ж файлу (my-upload-page.php) шаблону потрібно розмістити обробник, див. приклад вище.
список змін
З версії 2.5.0
Введено.
Код media_handle_upload() media handle upload WP 6.0.2