simonblackbourn
  • 0
Учитель

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

  • 0

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

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

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

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

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

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

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

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

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

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

    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.

    • 0

Оставить ответ

You must login to add an answer.