Come recuperare l'immagine dall'URL e impostarla come miniatura dell'immagine / post in primo piano


17

Dato un ID Vimeo, posso recuperare una miniatura dal video tramite l'API Vimeo Simple. Invece di chiamare l'API ogni volta che la mia pagina viene caricata, voglio impostare l'immagine come miniatura del post utilizzando il save_posthook (simile a questa domanda ).

Il mio problema è che non ho familiarità con le chiamate URL in php. Mi piacerebbe sapere:

  1. i vantaggi / gli svantaggi dell'utilizzo di un metodo come l'arricciatura rispetto a WP_Http. Uno è "migliore" dell'altro?

  2. l'ordine in cui dovrei chiamare le funzioni per impostare correttamente l'anteprima del post.

Qualsiasi aiuto sarebbe molto apprezzato.


Qualcuno l'ha capito? Sto provando a fare anche questo.

Risposte:


12

Il mio modo preferito di gestire questo problema è stato quello di utilizzare una piccola funzione documentata che ho scoperto su un altro post dello stack: media_sideload_image

Funziona recuperando l'URL di un'immagine nella directory di caricamento di WordPress e quindi associando l'immagine agli allegati di un post.

Puoi provarlo così:

// 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);
}  

4

Ciao @David John Smith :

1.) Se sei in WordPress, (quasi) usa sempre WP_Http; è una delle tante cose che adoro lavorare con WordPress. Perché chiamarlo e non CURL? Bene, perché ha una sintassi migliore e chiama CURL se CURL è disponibile. In caso contrario, sceglie tra una delle 3 altre opzioni. Quindi è davvero un brillante pezzo di kit.

2.) Per rispondere alla seconda domanda, dovrò sapere come si desidera nominare i file che si stanno scaricando?


Grazie Mike. Per quanto riguarda le miniature dei post, non mi interessa davvero come sono nominati, vorrei solo essere in grado di accedervi come correlati a un post, da post_thumbnail()o get_post_meta(). Immagino che avrebbe senso nominarlo con l'ID del post.
David John Smith,

Qualche aggiornamento a questo proposito?
NetConstructor.com il

@NetConstructor - È davvero difficile tenere traccia delle domande che si trovano in uno stato "in sospeso", quindi no. Ho appena creato una cartella "in sospeso" sulla barra dei segnalibri, vedrò se non posso essere più coerente con quello. Ma non ho tempo adesso per questo, quindi dovrò tornare ad esso.
MikeSchinkel,

@ Mike - grazie Mike, ho pensato che avresti potuto avere una soluzione qui perché, tra le altre cose, sembri essere il padrone di questa roba :-)
NetConstructor.com,

@ NetConstructor.com - LOL! Grazie, sono solo il maestro del debugger, tutto qui. :)
MikeSchinkel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.