Obtenha programaticamente imagens por URL e salve na pasta de uploads


14

Estou envolvido em uma grande migração de outro CMS para WordPress. Temos uma cópia do banco de dados e descobrimos como extrair o conteúdo e criar programaticamente postagens do WordPress usando uma instanciação da wpdbclasse.

No entanto, existem algumas milhares de imagens que gostaríamos de exibir automaticamente, gerar os vários tamanhos e anexá-las às postagens, para economizar cerca de uma semana de trabalho!

Existe uma maneira de obter uma imagem de um site remoto por URL e salvá-la na minha pasta wp-uploads? Eu acho que isso usa, wp_httpmas eu não estou familiarizado com isso.

Depois de obter a imagem e salvá-la, estou bem, pois posso usá-la wp_generate_attachment_metadatapara criar os vários tamanhos e wp_insert_attachmentanexá-la a uma postagem.

Obrigado Simon

Respostas:


29

Na verdade, existe uma ótima função que fará as três coisas para você:

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

O primeiro argumento é o URL remoto da imagem que você deseja baixar. O segundo argumento é o ID da postagem à qual você deseja anexar a imagem. O terceiro argumento é opcional, mas será uma descrição, se incluído.

Sugiro que você encontre uma maneira de acelerar os downloads para que você não se limite ao tempo limite, como limitar o número de imagens capturadas por carga e definir o importador para se atualizar entre os downloads ou usar o AJAX para fazer um. por vez de forma assíncrona.


1
isso é absolutamente fantástico john, muito obrigado - ele funciona perfeitamente. a limitação não é um problema, pois eu o configurei para aguardar um pressionamento de tecla após cada importação de postagem para nos dar a chance de verificar manualmente os detalhes e observar os problemáticos.
Simon Blackbourn

1
só porque eu precisava do Id do anexo a ser ligado a outro post, aqui está uma boa maneira de fazer isso
axel

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.