Jak pobrać obraz z adresu URL i ustawić jako wyróżnioną miniaturę obrazu / postu

17

Biorąc pod uwagę identyfikator Vimeo, mogę pobrać miniaturę z wideo za pomocą Vimeo Simple API. Zamiast wywoływać interfejs API za każdym razem, gdy ładuje się moja strona, chcę ustawić obraz jako miniaturę posta za pomocą save_posthaka (podobnie do tego pytania ).

Mój problem polega na tym, że nie znam wywołań URL w php. Chciałbym wiedzieć:

  1. zalety / wady stosowania metody takiej jak zwijanie w porównaniu do WP_Http. Czy jedno jest „lepsze” od drugiego?

  2. kolejność, w której powinienem wywoływać funkcje, aby pomyślnie ustawić miniaturę postu.

Każda pomoc byłaby bardzo mile widziana.

David John Smith
źródło
Czy ktoś to rozgryzł? Próbuję to również zrobić.

Odpowiedzi:

12

Moim ulubionym sposobem radzenia sobie z tym problemem było użycie małej udokumentowanej funkcji, którą odkryłem na innym stosie: media_sideload_image

Działa poprzez pobranie adresu URL obrazu do katalogu przesyłania WordPress, a następnie powiązanie obrazu z załącznikami postu.

Możesz spróbować tak:

// 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
źródło
4

Cześć @David John Smith :

1.) Jeśli korzystasz z WordPress, (prawie) zawsze używaj WP_Http; to jedna z wielu rzeczy, które uwielbiam w pracy z WordPress. Po co to nazywać, a nie CURL? Cóż, ponieważ ma ładniejszą składnię i wywołuje CURL, jeśli CURL jest dostępny. Jeśli nie, wybiera jedną z 3 innych opcji. To naprawdę świetny zestaw.

2.) Aby odpowiedzieć na drugie pytanie, muszę wiedzieć, jak chcesz nazwać pobierane pliki?

MikeSchinkel
źródło
Dzięki Mike. Jeśli chodzi o miniatury postów, tak naprawdę nie obchodzi mnie, jak się je nazywa, chciałbym mieć do nich dostęp w powiązaniu z postem przez post_thumbnail()lub get_post_meta(). Wydaje mi się, że sensowne byłoby nazwać go identyfikatorem postu.
David John Smith
Czy to ma jakieś aktualizacje?
NetConstructor.com,
@NetConstructor - Naprawdę trudno jest śledzić pytania w stanie „w toku”, więc nie. Właśnie utworzyłem folder „oczekujący” na pasku zakładek, zobaczę, czy nie mogę z tym bardziej się pogodzić. Ale nie mam teraz czasu na ten, więc muszę do niego wrócić.
MikeSchinkel,
@Mike - dziękuję Mike, pomyślałem, że mogłeś mieć tutaj rozwiązanie, ponieważ wydajesz się być mistrzem tych rzeczy :-)
NetConstructor.com
@ NetConstructor.com - LOL! Dzięki, jestem mistrzem debuggera i to wszystko. :)
MikeSchinkel,