Приветствую, на просторах нашел вот такой метод.
Здесь мы через media_handle_sideload по урлу загружаем изображение и возвращаем ид медиафайла
Проблема в том, что через этот метод нужно пропускать по +-200 изображений, происходит все это очень медленно. Ловлю тайм аут. Есть ли возможность как то "пакетно" загружать медиафайлы по url?
Буду рад любой подсказке, спасибо.
public function my_sideload_image($file, $post_id, $desc = null ){
global $debug; // определяется за пределами функции как true
if( ! function_exists('media_handle_sideload') ) {
require_once ABSPATH . 'wp-admin/includes/image.php';
require_once ABSPATH . 'wp-admin/includes/file.php';
require_once ABSPATH . 'wp-admin/includes/media.php';
}
// Загружаем файл во временную директорию
$tmp = download_url( $file );
// Устанавливаем переменные для размещения
$file_array = [
'name' => basename( $file ),
'tmp_name' => $tmp
];
// Удаляем временный файл, при ошибке
if ( is_wp_error( $tmp ) ) {
$file_array['tmp_name'] = '';
if( $debug ) echo 'Tmp file is not exist! <br />';
}
// проверки при дебаге
if( $debug ){
echo 'File array: <br />';
var_dump( $file_array );
echo '<br /> Post id: ' . $post_id . '<br />';
}
$id = media_handle_sideload( $file_array, $post_id, $desc );
// Проверяем работу функции
if ( is_wp_error( $id ) ) {
var_dump( $id->get_error_messages() );
}
// удалим временный файл
@unlink( $tmp );
return $id;
}