Программно Получить изображения по URL и сохранить в папке загрузки

wordpress.stackexchange https://wordpress.stackexchange.com/questions/12379

Вопрос

Я участвую в большой миграции от другой CMS в WordPress. У нас есть копия базы данных и выяснили, как извлечь контент и программно создавать из нее посты WordPress, используя экземпляр wpdb учебный класс.

Тем не менее, есть несколько тысяч изображений, которые мы хотели бы автоматически вытянуть, генерировать различные размеры, а затем прикрепить к постам, чтобы сэкономить около недели работы!

Есть ли способ получить изображение с удаленного сайта по URL и сохранить его в моей папке WP-Uploads? Я думаю, это использует wp_http Но я не знаком с этим.

Как только у меня есть изображение и сохранил его, я в порядке, как я могу использовать wp_generate_attachment_metadata Чтобы создать различные размеры и wp_insert_attachment Чтобы прикрепить его к сообщению.

Спасибо Саймон

Это было полезно?

Решение

На самом деле есть отличная функция, которая сделает все три из этих вещей для вас:

media_sideload_image( $url, $post_id, $description );

Первый аргумент - это удаленный URL -адрес изображения, который вы хотите скачать. Второй аргумент - это идентификатор поста сообщения, к которому вы хотите прикрепить изображение. Третий аргумент не является обязательным, но будет описанием, если включено.

Я бы посоветовал найти способ запустить загрузки, чтобы вы не продолжали время от времени, например, ограничение количества изображений, которые он тянет в загрузке и установление импортера, чтобы освежить себя между загрузками или использование Ajax, чтобы сделать их один асинхронно.

Другие советы

Ответ Джона правильный Re: Использование media_sideload_image, просто обратите внимание, что вам может потребоваться эти сценарии раньше, если вы не делаете этого в контексте администратора WP:

require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');

Видеть https://codex.wordpress.org/function_reference/media_sideload_image#notes

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top