Estou escrevendo um tema / plug-in personalizado no qual preciso fazer o download de imagens programaticamente de determinadas páginas da Web para a pasta de upload e depois inseri-las como parte da postagem.
Assim, consegui encontrar os URLs da imagem de forma programática e preciso salvá-los na pasta de upload em wp-content, no entanto, essa pasta possui uma estrutura de pastas específica do WordPress para as imagens salvas.
Agora, minha pergunta é: existe uma API, função ou método do WordPress que permita baixar imagens da Web e salvá-las na pasta de uploads? E se sim, o que é isso.
Caso contrário, o que devo fazer para salvar essas imagens?
Até agora, eu estou fazendo isso
$filetype = wp_check_filetype(basename($image_file_name), null );
$upload_dir = wp_upload_dir();
$attachment = array(
'guid' => $upload_dir['url'] . '/' . basename( $image_file_name ),
'post_mime_type' => $filetype['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($image_file_name)),
'post_content' => '',
'post_status' => 'inherit'
);
$attachment_id = wp_insert_attachment( $attachment, $image_file_name, $post_id );
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $image_file_name );
wp_update_attachment_metadata( $attachment_id, $attachment_data );
set_post_thumbnail( $post_id, $attachment_id );
Mas o código acima está me dando o seguinte erro
imagejpeg(http://wscdn.bbc.co.uk/worldservice/assets/images/2013/07/21/130721173402_egypts_new_foreign_minister_fahmy_304x171_reuters-150x150.jpg): failed to open stream: HTTP wrapper does not support writeable connections in C:\dev\wordpress\pterodactylus\wp-includes\class-wp-image-editor.php on line 334
E após uma investigação mais aprofundada, parece que o erro foi causado por
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $image_file_name );
E após uma investigação mais aprofundada, a documentação para os wp_insert_attachment()
estados que, The file MUST be on the uploads directory
no que diz respeito à$image_file_name
Então, como faço para baixar uma imagem e salvá-la na minha postagem corretamente?
Muito obrigado.
fonte
Respostas:
Recentemente, tive que fazer isso por meio de um script cron noturno para um fluxo de mídia social. $ parent_id é o ID da postagem à qual você deseja anexar a imagem.
ex:
fonte
Você não publicou o código usado para buscar e salvar a imagem; portanto, é impossível dizer onde está o erro.
Experimente este código para pegar e salvar a imagem:
Em seguida, basta usar essas funções em combinação com seu código, da seguinte maneira:
Lembre-se também de que você deve incluir wp-admin / includes / image.php em seu código para que a função
wp_generate_attachment_metadata()
funcione, consulte o CodexEspero que ajude, mas observe que todo o código aqui não foi testado.
fonte
if ( $mirror['error'] ) return false; //maybe log error
. Também não há nenhuma verificação se o conteúdo recuperado é realmente uma imagem$filetype = wp_check_filetype($filename, NULL ); if ( ! substr_count($filetype['type'], 'image') ) return false;
Você pode usar esta função para fazer upload remoto de uma imagem para a pasta de uploads e configurá-la como imagem em destaque.
Uso:
fonte
Basta usar a função padrão wp (v2.6.0 +):
fonte