Программно Получить изображения по URL и сохранить в папке загрузки
-
16-10-2019 - |
Вопрос
Я участвую в большой миграции от другой 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