Comment récupérer une image à partir d'une URL et la définir en tant qu'image / miniature de publication sélectionnée

15

Etant donné un identifiant Vimeo, je peux récupérer une vignette de la vidéo via Vimeo Simple API. Plutôt que d'appeler l'API chaque fois que ma page se charge, je souhaite définir l'image comme vignette de publication à l'aide du crochet save_post (similaire à cette question ).

Mon problème est que je ne suis pas familier avec les appels d'URL en php. J'aimerais savoir:

  1. les avantages / inconvénients de l’utilisation d’une méthode telle que curl par rapport à WP_Http . L'un est-il "meilleur" que l'autre?

  2. l'ordre dans lequel je devrais appeler des fonctions pour définir correctement la vignette de publication.

Toute aide serait grandement appréciée.

    
posée David John Smith 19.10.2010 - 02:57

2 réponses

12

Ma façon préférée de gérer ce problème a été d’utiliser une petite fonction documentée découverte sur une autre pile: media_sideload_image

Cela fonctionne en récupérant une URL d'image dans le répertoire de téléchargement WordPress, puis en associant l'image aux pièces jointes d'un message.

Vous pouvez l'essayer comme suit:

// 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);
}  
    
réponse donnée sxalexander 01.10.2011 - 01:31
4

Bonjour @ David John Smith :

1.) Si vous êtes dans WordPress, utilisez (presque) toujours WP_Http ; C'est l'une des nombreuses choses que j'aime travailler avec WordPress. Pourquoi l'appeler et pas CURL? Eh bien, parce qu’il a une syntaxe plus agréable et qu’il appelle CURL si CURL est disponible. Sinon, il choisit parmi l’une des 3 autres options. Il s’agit donc vraiment d’une pièce brillante.

2.) Pour répondre à la deuxième question, je dois savoir comment vous souhaitez nommer les fichiers que vous téléchargez?

    
réponse donnée MikeSchinkel 19.10.2010 - 06:17

Lire d'autres questions sur les étiquettes