Как получить изображение из URL и установить в виде изображения/post thumbnail
-
16-10-2019 - |
Вопрос
Учитывая идентификатор Vimeo, я могу получить миниатюру из видео через Vimeo Simple API. Вместо того, чтобы вызывать API каждый раз, когда загружается моя страница, я хочу установить изображение в качестве миниатюры Post, используя save_post
крюч этот вопрос).
Моя проблема в том, что я не знаком с вызовами URL в PHP. Я бы хотел знать:
преимущества/недостатки использования такого метода, как Curl, по сравнению с
WP_Http
. Анкет Один "лучше", чем другой?Порядок, в котором я должен вызвать функции, чтобы успешно установить миниатюру после.
Любая помощь будет очень оценена.
Решение
Моим любимым способом решения этой проблемы было использовать небольшую задокументированную функцию, которую я обнаружил в другой посте стека: media_sideload_image
Он работает путем получения URL -адреса изображения в DIR загрузки WordPress, а затем связывая изображение с вложениями сообщения.
Вы можете попробовать это так:
// 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);
}
Другие советы
Привет @David Джон Смит:
1.) Если вы в WordPress, (почти) всегда используйте WP_Http
; Это одна из многих вещей, которые я люблю в работе с WordPress. Зачем называть это, а не скручивать? Ну, потому что он имеет более приятный синтаксис и вызывает Curl, если Curl доступен. Если нет, то он выбирает из одного из 3 других вариантов. Так что это действительно блестящий кусок комплекта.
2.) Чтобы ответить на 2 -й вопрос, мне нужно знать, как вы хотите назвать файлы, которые вы загружаете?