Cara mengambil gambar dari URL dan menetapkan sebagai gambar / posting thumbnail pilihan

17

Diberi ID Vimeo, saya dapat mengambil thumbnail dari video melalui Vimeo Simple API. Daripada memanggil API setiap kali halaman saya dimuat, saya ingin mengatur gambar sebagai thumbnail postingan menggunakan save_postkait (mirip dengan pertanyaan ini ).

Masalah saya adalah bahwa saya tidak terbiasa dengan panggilan URL di php. Saya ingin tahu:

  1. manfaat / kelemahan menggunakan metode seperti curl dibandingkan dengan WP_Http. Apakah yang satu "lebih baik" dari yang lain?

  2. urutan di mana saya harus memanggil fungsi untuk berhasil mengatur thumbnail posting.

Bantuan apa pun akan sangat dihargai.

David John Smith
sumber
Adakah yang tahu ini? Saya mencoba melakukan ini juga.

Jawaban:

12

Cara favorit saya untuk menangani masalah ini adalah dengan menggunakan sedikit fungsi terdokumentasi yang saya temukan pada tumpukan postingan lainnya: media_sideload_image

Ini bekerja dengan mengambil url gambar ke direktori upload WordPress dan kemudian mengaitkan gambar ke lampiran posting.

Anda dapat mencobanya seperti ini:

// 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
sumber
4

Hai @ David John Smith :

1.) Jika Anda berada di WordPress, (hampir) selalu gunakan WP_Http; itu salah satu dari banyak hal yang saya sukai tentang bekerja dengan WordPress. Mengapa memanggilnya dan bukan CURL? Yah, karena memiliki sintaks yang lebih bagus dan itu memanggil CURL jika CURL tersedia. Jika tidak, ia memilih salah satu dari 3 opsi lain. Jadi itu benar-benar sepotong kit yang brilian.

2.) Untuk menjawab pertanyaan ke-2, saya perlu tahu bagaimana Anda ingin memberi nama file yang Anda unduh?

MikeSchinkel
sumber
Terima kasih Mike. Mengenai thumbnail postingan, saya tidak terlalu peduli bagaimana namanya, saya hanya ingin dapat mengaksesnya terkait dengan postingan, baik dengan post_thumbnail()atau get_post_meta(). Saya kira masuk akal untuk menamakannya dengan ID posting.
David John Smith
ada pembaruan tentang ini?
NetConstructor.com
@ NetConstructor - Sangat sulit untuk melacak pertanyaan yang berada dalam kondisi "tertunda", jadi tidak. Saya baru saja membuat folder "menunggu" di bilah bookmark saya, saya akan melihat apakah saya tidak bisa lebih konsisten dengan itu. Tapi, saya tidak punya waktu sekarang untuk yang ini jadi harus kembali ke sana.
MikeSchinkel
@ Mike - terima kasih Mike, hanya berpikir Anda mungkin punya solusi di sini karena antara lain Anda tampaknya menjadi master dari hal ini :-)
NetConstructor.com
@ NetConstructor.com - LOL! Terima kasih, saya hanya master debugger, itu saja. :)
MikeSchinkel