Как получить изображение из URL и установить в виде изображения/post thumbnail

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

  •  16-10-2019
  •  | 
  •  

Вопрос

Учитывая идентификатор Vimeo, я могу получить миниатюру из видео через Vimeo Simple API. Вместо того, чтобы вызывать API каждый раз, когда загружается моя страница, я хочу установить изображение в качестве миниатюры Post, используя save_post крюч этот вопрос).

Моя проблема в том, что я не знаком с вызовами URL в PHP. Я бы хотел знать:

  1. преимущества/недостатки использования такого метода, как Curl, по сравнению с WP_Http. Анкет Один "лучше", чем другой?

  2. Порядок, в котором я должен вызвать функции, чтобы успешно установить миниатюру после.

Любая помощь будет очень оценена.

Это было полезно?

Решение

Моим любимым способом решения этой проблемы было использовать небольшую задокументированную функцию, которую я обнаружил в другой посте стека: 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 -й вопрос, мне нужно знать, как вы хотите назвать файлы, которые вы загружаете?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top