Comment récupérer l'image à partir de l'URL et définir comme l'image sélectionnée / miniature après

wordpress.stackexchange https://wordpress.stackexchange.com/questions/3029

  •  16-10-2019
  •  | 
  •  

Question

Étant donné un Vimeo ID, je peux récupérer une miniature de la vidéo via Vimeo API simple. Plutôt que d'appeler l'API à chaque fois que mes chargement de la page que je veux définir l'image comme poste miniature à l'aide du crochet save_post (similaire à cette question ).

Mon problème est que je ne suis pas familier avec les appels URL en php. Je voudrais savoir:

  1. les avantages / inconvénients de l'utilisation d'une méthode comme boucle par rapport à WP_Http. Est-ce un "meilleur" que l'autre?

  2. l'ordre dans lequel j'appeler des fonctions pour définir avec succès la vignette postale.

Toute aide serait grandement appréciée.

Était-ce utile?

La solution

Ma façon préférée de traiter ce problème a été d'utiliser une petite fonction documentée que j'ai découvert sur un autre poste de pile: media_sideload_image

Il fonctionne en allant chercher une URL d'image pour le répertoire de téléchargement de WordPress puis associer l'image aux pièces jointes d'un poste.

Vous pouvez l'essayer comme ceci:

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

Autres conseils

Salut John Smith @ David :

1) Si vous êtes dans WordPress, (presque) toujours utiliser WP_Http. il est l'une des nombreuses choses que j'aime travailler avec WordPress. Pourquoi l'appeler et non CURL? Eh bien, parce qu'il a une syntaxe plus agréable et il appelle CURL si CURL est disponible. Dans le cas contraire, il choisit de l'un des 3 autres options. Il est donc vraiment un morceau brillant de kit.

2). Pour répondre à la 2ème question, je vais avoir besoin de savoir comment vous voulez nommer les fichiers que vous téléchargez?

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top