Como recuperar uma imagem do URL e definir como imagem em destaque / miniatura da postagem

17

Dado um ID do Vimeo, posso recuperar uma miniatura do vídeo via Vimeo Simple API. Em vez de chamar a API toda vez que minha página carregar, desejo definir a imagem como miniatura da postagem usando o save_postgancho (semelhante a esta pergunta ).

Meu problema é que não estou familiarizado com chamadas de URL em php. Eu gostaria de saber:

  1. os benefícios / desvantagens de usar um método como curl em comparação com WP_Http. Um é melhor que o outro?

  2. a ordem em que devo chamar as funções para definir com êxito a miniatura da postagem.

Qualquer ajuda seria muito apreciada.

David John Smith
fonte
Alguém desvendou isso? Eu estou tentando fazer isso também.

Respostas:

12

Minha maneira favorita de lidar com esse problema foi usar uma pequena função documentada que descobri em outro post da pilha: media_sideload_image

Funciona buscando um URL de imagem no diretório de upload do WordPress e associando a imagem aos anexos de uma postagem.

Você pode tentar assim:

// required libraries for media_sideload_image
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');

// $post_id == the post you want the image to be attached to
// $video_thumb_url == the vimeo video's thumb url
// $description == optional description

// load the image
$result = media_sideload_image($video_thumb_url, $post_id, $description);

// then find the last image added to the post attachments
$attachments = get_posts(array('numberposts' => '1', 'post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC'));


if(sizeof($attachments) > 0){
    // set image as the post thumbnail
    set_post_thumbnail($post_id, $attachments[0]->ID);
}  
sxalexander
fonte
4

Olá, David Smith :

1.) Se você está no WordPress, (quase) sempre use WP_Http; é uma das muitas coisas que eu amo em trabalhar com o WordPress. Por que chamá-lo e não CURL? Bem, porque tem uma sintaxe melhor e chama CURL se CURL estiver disponível. Caso contrário, ele escolhe uma das 3 outras opções. Então é realmente uma peça brilhante do kit.

2.) Para responder à 2ª pergunta, precisarei saber como você deseja nomear os arquivos que está baixando?

MikeSchinkel
fonte
Obrigado Mike. Quanto às miniaturas das postagens, eu realmente não me importo com o nome delas, eu gostaria de poder acessá-las relacionadas a uma postagem, por post_thumbnail()ou get_post_meta(). Eu acho que faria sentido nomeá-lo com o ID da postagem.
David John Smith
alguma atualização disso?
NetConstructor.com
@NetConstructor - É realmente difícil acompanhar as perguntas que estão no estado "pendente", então não. Acabei de criar uma pasta "pendente" na minha barra de favoritos. Vou ver se não consigo ser mais consistente com isso. Mas, neste momento, não tenho tempo para este, então terei que voltar a ele.
MikeSchinkel
@ Mike - obrigado Mike, apenas pensei que você poderia ter tido uma solução aqui, porque, entre outras coisas, você parece ser o mestre dessas coisas :-)
NetConstructor.com
@ NetConstructor.com - LOL! Obrigado, sou apenas o mestre do depurador, isso é tudo. :)
MikeSchinkel