Как загрузить файл с внешнего api ? wordpress

Всем привет!Получаю по внешнему API файлы документов с описанием и ссылкой на загрузку файла в формате JSON. Подскажите, как мне документы сохранить в wordpress ? Также я создаю с помощью wp_inset_post посты,в которые данные сохраняю с api и каждому посту нужно прикрепить свой документ. Как мне этот документ сохранить в wordPress и пробросить через wp_insert_post не понимаю... Создание постов выглядит так:

 $rules_id = $item->id;//id     
 $rules_status = $item->status;
 $rules_title = $item->title . ' ' . 'id ' . $rules_id; //Заголовок поста
 $my_post = array(
            'post_title' => $rules_title,
            'post_status' => 'publish',
            'post_type' => 'post',
            'post_category' => array(63)
 );
$post_id = wp_insert_post($my_post);
wp_set_object_terms($post_id, array($rules_status), 'post_tag', false);

Ответы (1 шт):

Автор решения: Evgeniy Leonidov

Для загрузки файлов в WordPress используется функция media_handle_sideload(). Она качает файл в директорию загрузок и создает соответствующий объект вложения в БД. По коду я не понял где ссылка на файл. Поэтому предположим, что есть переменная $file_url, которая содержит прямую ссылку. Дальше качаем с media_handle_sideload() и крепим к посту wp_insert_post().

Примерный код:

$rules_id = $item->id; // id
$rules_status = $item->status;
$rules_title = $item->title . ' ' . 'id ' . $rules_id; // Заголовок поста
$file_url = $item->file_url; // URL файла для загрузки, ибо не увидел в вашем коде

$my_post = array(
    'post_title'    => $rules_title,
    'post_status'   => 'publish',
    'post_type'     => 'post',
    'post_category' => array(63)
);

$post_id = wp_insert_post($my_post);

$tmp = download_url($file_url);

if (is_wp_error($tmp)) {
    // Обработка ошибки скачивания файла тут!
} else {
    $file_array = array(
        'name' => basename($file_url), // Задаём имя файла
        'tmp_name' => $tmp // Путь к временному файлу
    );

    $id = media_handle_sideload($file_array, $post_id);

    if (is_wp_error($id)) {
        @unlink($file_array['tmp_name']); // Если не вышло скачать, удаляем временный файл
    } else {
        // Если файл успешно загружен, прикрепляем к посту
update_post_meta($post_id, 'attached_file_id', $attachment_id);
// предварительно надо создать мета-поле attached_file_id
    }
}
→ Ссылка