web-dev-qa-db-fra.com

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

Avec un ID Vimeo, je peux récupérer une vignette de la vidéo via Vimeo Simple API. Plutôt que d'appeler l'API à chaque chargement de ma page, je souhaite définir l'image en tant que 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. Est-ce que l'un est meilleur que l'autre?

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

Toute aide serait grandement appréciée.

16
David John Smith

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

Cela fonctionne en récupérant une 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 ça:

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

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. C'est donc un kit brillant.

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

4
MikeSchinkel