on_click
@on_click

Можно ли ускорить процесс загрузки изображений в медиатеку вп?

Приветствую, на просторах нашел вот такой метод.
Здесь мы через 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;
	}
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix
Java Software Engineer
Здравствуйте!
А что насчет этих методов:
1) загружаете ваши медиафайлы по фтп, а далее импортируете их в библиотеку
Media from FTP - https://wordpress.org/plugins/media-from-ftp/

2) загружаете ваши файлы через фтп или через ftps, а далее при помощи wp cli импортируете их в библиотеку
https://developer.wordpress.org/cli/commands/media...

3) Использование REST API.
Аналогично загружаете по доступному вам протоколу ваши медиафайлы, а далее при помощи REST API создаете медиа.
Например, https://gist.github.com/ahmadawais/0ccb8a32ea795ff...
С REST APİ я работал на языке Java и скажу, что там все прекрасно работает. С рнр наверное, код из гита указанный выше подойдет
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы