Programaticamente, obtenha imagens por URL e salve na pasta de uploads

12

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

No entanto, existem algumas milhares de imagens que gostaríamos de destacar automaticamente, gerar os vários tamanhos e anexar as 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 pasta wp-uploads? Eu acho que isso usa wp_http , mas eu não estou familiarizado com isso.

Depois de obter a imagem e salvá-la, posso usar o wp_generate_attachment_metadata para criar os vários tamanhos e wp_insert_attachment para anexá-la a uma postagem.

Obrigado Simon

    
por Simon Blackbourn 18.03.2011 / 15:41

2 respostas

24

Na verdade, há uma ótima função que fará todas essas 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 post id do post ao qual você deseja anexar a imagem. O terceiro argumento é opcional, mas será uma descrição, se incluído.

Eu sugeriria encontrar uma maneira de limitar os downloads para que você não consumaria o tempo limite, como limitar o número de imagens que ele puxa por carregamento e configurar o importador para atualizar-se entre os downloads ou usar o AJAX para faça-os um de cada vez de forma assíncrona.

    
por John P Bloch 18.03.2011 / 15:56
1

A resposta de João está correta: usando media_sideload_image , apenas note que você pode precisar requerer esses scripts antes, se você não estiver fazendo isso no contexto do 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');

Veja enlace

    
por bryceadams 24.08.2016 / 10:47